<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>dreagis.com - Decal</title>
    <link>http://www.dreagis.com/</link>
    <description>when the ink flows true, worlds are born and thrive</description>
    <language>en-us</language>
    <copyright>BJ Herrington</copyright>
    <lastBuildDate>Tue, 17 Feb 2009 20:58:08 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>bob@dreagis.com</managingEditor>
    <webMaster>bob@dreagis.com</webMaster>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=45d6cfe8-495b-4283-a9fc-38743e42ad84</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,45d6cfe8-495b-4283-a9fc-38743e42ad84.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,45d6cfe8-495b-4283-a9fc-38743e42ad84.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=45d6cfe8-495b-4283-a9fc-38743e42ad84</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p align="left">
So I’ve been motivated to work on Decal lately for some reason.  Maybe it was
Virindi and Flynn talking about it; maybe I was just bored with my other projects. 
I spent a few days on bugs here and there, hopefully fixing the vendor bug in adapter
and another one with world iterators, and decide to test some of my own plugins. 
Of course the biggest one is QuickBuff, since it’s the least simple, and of course
it crashes horribly whenever I click start.  It seems somewhere along the line
the ‘magic’ COM-thread marshaling quit working.  I’m not sure if it’s because
of Vista or a recent .NET update, but either way, QB was dead.
</p>
        <p align="left">
I knew the issue was thread marshaling because the error was obvious:  COM Interface
not found.  Of course I don’t want to debug this issue because I don’t really
know how Mekle fixed it in the first place.  Instead I start converting everything
to use the Invoke method that was already present in my framework to move all COM
calls to the main thread.  After half a day of refactoring my task class everything
looks good.  Until I get around to testing things.  It looks like my Invoke
method isn’t working at all.
</p>
        <p align="left">
It turned out that I didn’t do enough research when I was looking up synchronization
methods.  I had found and decided on the SynchronizationContext object, but the
class doesn’t actually do anything.  Apparently it’s meant to be more of an example
to implement a custom sync context.  After many, many false starts and even more
crashes, I eventually went back to the good old Control.Invoke method.  I wanted
to avoid this to keep from having a dependency on System.Windows.Forms, but aside
from implementing my own sync context, I didn’t have much choice.
</p>
        <p align="left">
All said and done, this turned out to be a great batch of work.  The plugin is
way faster and smoother than it was before and seemingly more stable too.  I
even went ahead and implemented the adhoc/smart buffing feature, and I’m considering
going forward with rebuilding the profile editor using the current view system.
</p>
        <p align="left">
I’ll do a release after I clean up the adhoc view some more, probably this weekend.
</p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=45d6cfe8-495b-4283-a9fc-38743e42ad84" />
      </body>
      <title>Broken Threads</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,45d6cfe8-495b-4283-a9fc-38743e42ad84.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,45d6cfe8-495b-4283-a9fc-38743e42ad84.aspx</link>
      <pubDate>Tue, 17 Feb 2009 20:58:08 GMT</pubDate>
      <description>&lt;p align=left&gt;
So I’ve been motivated to work on Decal lately for some reason.&amp;nbsp; Maybe it was
Virindi and Flynn talking about it; maybe I was just bored with my other projects.&amp;nbsp;
I spent a few days on bugs here and there, hopefully fixing the vendor bug in adapter
and another one with world iterators, and decide to test some of my own plugins.&amp;nbsp;
Of course the biggest one is QuickBuff, since it’s the least simple, and of course
it crashes horribly whenever I click start.&amp;nbsp; It seems somewhere along the line
the ‘magic’ COM-thread marshaling quit working.&amp;nbsp; I’m not sure if it’s because
of Vista or a recent .NET update, but either way, QB was dead.
&lt;/p&gt;
&lt;p align=left&gt;
I knew the issue was thread marshaling because the error was obvious:&amp;nbsp; COM Interface
not found.&amp;nbsp; Of course I don’t want to debug this issue because I don’t really
know how Mekle fixed it in the first place.&amp;nbsp; Instead I start converting everything
to use the Invoke method that was already present in my framework to move all COM
calls to the main thread.&amp;nbsp; After half a day of refactoring my task class everything
looks good.&amp;nbsp; Until I get around to testing things.&amp;nbsp; It looks like my Invoke
method isn’t working at all.
&lt;/p&gt;
&lt;p align=left&gt;
It turned out that I didn’t do enough research when I was looking up synchronization
methods.&amp;nbsp; I had found and decided on the SynchronizationContext object, but the
class doesn’t actually do anything.&amp;nbsp; Apparently it’s meant to be more of an example
to implement a custom sync context.&amp;nbsp; After many, many false starts and even more
crashes, I eventually went back to the good old Control.Invoke method.&amp;nbsp; I wanted
to avoid this to keep from having a dependency on System.Windows.Forms, but aside
from implementing my own sync context, I didn’t have much choice.
&lt;/p&gt;
&lt;p align=left&gt;
All said and done, this turned out to be a great batch of work.&amp;nbsp; The plugin is
way faster and smoother than it was before and seemingly more stable too.&amp;nbsp; I
even went ahead and implemented the adhoc/smart buffing feature, and I’m considering
going forward with rebuilding the profile editor using the current view system.
&lt;/p&gt;
&lt;p align=left&gt;
I’ll do a release after I clean up the adhoc view some more, probably this weekend.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=45d6cfe8-495b-4283-a9fc-38743e42ad84" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,45d6cfe8-495b-4283-a9fc-38743e42ad84.aspx</comments>
      <category>Decal</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=3af81068-a217-48dc-90dc-67276a4fe0cf</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,3af81068-a217-48dc-90dc-67276a4fe0cf.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,3af81068-a217-48dc-90dc-67276a4fe0cf.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3af81068-a217-48dc-90dc-67276a4fe0cf</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So we've been both working on and putting off the new view system in <a href="http://www.decaldev.com">Decal</a> for
ages.  Checksum did a <strong>lot</strong> of work to give us something to extend,
and we've been chugging along with that.  We have a couple of semi-usable controls,
and a simple form/view loader.  The integration with Decal still lacks a great
deal, but there's one very big problem with the system:  It's <strong>fugly</strong>.
</p>
        <p>
          <a href="http://www.dreagis.com/content/binary/WindowsLiveWriter/UglyIsntIt_135F2/image_2.png">
            <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="191" alt="image" src="http://www.dreagis.com/content/binary/WindowsLiveWriter/UglyIsntIt_135F2/image_thumb.png" width="244" border="0" />
          </a>
        </p>
        <p>
Above you can see NVS or Decal.Forms in our test container.  It's not going to
win any beauty pageants for some time.
</p>
        <p>
We do have a powerful theme system that goes along with NVS though.  Once the
controls stabilize, and we start working on performance, it shouldn't be hard to make
things look great.  Of course, none of us have any artistic talent so it'll never
look that good (unless we can con an artsy person into the core team).
</p>
        <p>
In support of this effort (though mostly just so I can say I finally finished rewriting
it) I've put some effort into reviving Portal Opus.  I had been sitting on the
framework for ages now and decided a couple of days ago to go ahead and integrate <a href="http://acdev.sourceforge.net/">Ken's
DatUtils</a> to speed up the progress (his spell table object probably saved me an
entire night of coding easily).  Right now it supports all of the textures that
Decal supports and loads the skill and spell tables.  I'm going to fool-proof
it a bit and post an alpha in the near future.  After that, I'm going to start
building a model viewer into it too.
</p>
        <p>
          <a href="http://www.dreagis.com/content/binary/WindowsLiveWriter/UglyIsntIt_135F2/image_4.png">
            <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="151" alt="image" src="http://www.dreagis.com/content/binary/WindowsLiveWriter/UglyIsntIt_135F2/image_thumb_1.png" width="244" border="0" />
          </a>
        </p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=3af81068-a217-48dc-90dc-67276a4fe0cf" />
      </body>
      <title>Ugly, Isn't It?</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,3af81068-a217-48dc-90dc-67276a4fe0cf.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,3af81068-a217-48dc-90dc-67276a4fe0cf.aspx</link>
      <pubDate>Tue, 04 Mar 2008 09:30:53 GMT</pubDate>
      <description>&lt;p&gt;
So we've been both working on and putting off the new view system in &lt;a href="http://www.decaldev.com"&gt;Decal&lt;/a&gt; for
ages.&amp;nbsp; Checksum did a &lt;strong&gt;lot&lt;/strong&gt; of work to give us something to extend,
and we've been chugging along with that.&amp;nbsp; We have a couple of semi-usable controls,
and a simple form/view loader.&amp;nbsp; The integration with Decal still lacks a great
deal, but there's one very big problem with the system:&amp;nbsp; It's &lt;strong&gt;fugly&lt;/strong&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.dreagis.com/content/binary/WindowsLiveWriter/UglyIsntIt_135F2/image_2.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=191 alt=image src="http://www.dreagis.com/content/binary/WindowsLiveWriter/UglyIsntIt_135F2/image_thumb.png" width=244 border=0&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Above you can see NVS or Decal.Forms in our test container.&amp;nbsp; It's not going to
win any beauty pageants for some time.
&lt;/p&gt;
&lt;p&gt;
We do have a powerful theme system that goes along with NVS though.&amp;nbsp; Once the
controls stabilize, and we start working on performance, it shouldn't be hard to make
things look great.&amp;nbsp; Of course, none of us have any artistic talent so it'll never
look that good (unless we can con an artsy person into the core team).
&lt;/p&gt;
&lt;p&gt;
In support of this effort (though mostly just so I can say I finally finished rewriting
it) I've put some effort into reviving Portal Opus.&amp;nbsp; I had been sitting on the
framework for ages now and decided a couple of days ago to go ahead and integrate &lt;a href="http://acdev.sourceforge.net/"&gt;Ken's
DatUtils&lt;/a&gt; to speed up the progress (his spell table object probably saved me an
entire night of coding easily).&amp;nbsp; Right now it supports all of the textures that
Decal supports and loads the skill and spell tables.&amp;nbsp; I'm going to fool-proof
it a bit and post an alpha in the near future.&amp;nbsp; After that, I'm going to start
building a model viewer into it too.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.dreagis.com/content/binary/WindowsLiveWriter/UglyIsntIt_135F2/image_4.png"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=151 alt=image src="http://www.dreagis.com/content/binary/WindowsLiveWriter/UglyIsntIt_135F2/image_thumb_1.png" width=244 border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=3af81068-a217-48dc-90dc-67276a4fe0cf" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,3af81068-a217-48dc-90dc-67276a4fe0cf.aspx</comments>
      <category>Decal</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=c94ec2da-ce32-4675-8be1-49d38d366f20</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,c94ec2da-ce32-4675-8be1-49d38d366f20.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,c94ec2da-ce32-4675-8be1-49d38d366f20.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c94ec2da-ce32-4675-8be1-49d38d366f20</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For some time now I've been working on a project, QuickBuff/NB2-Lite, the former being
its name, the later being its purpose.  The premise is to have a plugin that
can take the old nb2 profiles we probably all have still laying around and run them. 
Recently I've been making a lot of progress on this and have been able to ssuccessfully
run buff profiles.  Unfortunately vital recovery is still incomplete, and I haven't
yet started on equipment manipulations.
</p>
        <p>
I very much wanted to bring back the old nb2, but between the network parser changes
and the control infrastructure changing, that became less and less of a reality. 
The network parser alone was enough to make me want to drop it since nb2 is just a
huge network driven state engine.  Not to mention the sheer amount of code duplication
within that engine.  I don't know how nerf ever managed to maintain this code
as long as he did.
</p>
        <p>
Expect to hear more on this in the future as I near the testing phase.  I'll
probably also start requesting copies of your profiles so that I can make sure everything
works as expected.
</p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=c94ec2da-ce32-4675-8be1-49d38d366f20" />
      </body>
      <title>Resurrecting Nerfus Buffus</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,c94ec2da-ce32-4675-8be1-49d38d366f20.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,c94ec2da-ce32-4675-8be1-49d38d366f20.aspx</link>
      <pubDate>Tue, 20 Jun 2006 20:15:49 GMT</pubDate>
      <description>&lt;p&gt;
For some time now I've been working on a project, QuickBuff/NB2-Lite, the former being
its name, the later being its purpose.&amp;nbsp; The premise is to have a plugin that
can take the old nb2 profiles we probably all have still laying around and run them.&amp;nbsp;
Recently I've been making a lot of progress on this and have been able to ssuccessfully
run buff profiles.&amp;nbsp; Unfortunately vital recovery is still incomplete, and I haven't
yet started on equipment manipulations.
&lt;/p&gt;
&lt;p&gt;
I very much wanted to bring back the old nb2, but between the network parser changes
and the control infrastructure changing, that became less and less of a reality.&amp;nbsp;
The network parser alone was enough to make me want to drop it since nb2 is just a
huge network driven state engine.&amp;nbsp; Not to mention the sheer amount of code duplication
within that engine.&amp;nbsp; I don't know how nerf ever managed to maintain this code
as long as he did.
&lt;/p&gt;
&lt;p&gt;
Expect to hear more on this in the future as I near the testing phase.&amp;nbsp; I'll
probably also start requesting copies of your profiles so that I can make sure everything
works as expected.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=c94ec2da-ce32-4675-8be1-49d38d366f20" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,c94ec2da-ce32-4675-8be1-49d38d366f20.aspx</comments>
      <category>Decal</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=8d78a506-fdcd-4040-9434-312d9e7acd2c</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,8d78a506-fdcd-4040-9434-312d9e7acd2c.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,8d78a506-fdcd-4040-9434-312d9e7acd2c.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8d78a506-fdcd-4040-9434-312d9e7acd2c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I know I said something about tomorrow, but once I started working out the examples
I wanted, I found many defiencies in my original setup.  I've since been working
out a complete overhaul of the message system.  Once I complete the refining
of the new system, I'll go over everything including the differences between the two.
</p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=8d78a506-fdcd-4040-9434-312d9e7acd2c" />
      </body>
      <title>Adapter Messages...</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,8d78a506-fdcd-4040-9434-312d9e7acd2c.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,8d78a506-fdcd-4040-9434-312d9e7acd2c.aspx</link>
      <pubDate>Thu, 15 Jun 2006 22:51:35 GMT</pubDate>
      <description>&lt;p&gt;
I know I said something about tomorrow, but once I started working out the examples
I wanted, I found many defiencies in my original setup.&amp;nbsp; I've since been working
out a complete overhaul of the message system.&amp;nbsp; Once I complete the refining
of the new system, I'll go over everything including the differences between the two.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=8d78a506-fdcd-4040-9434-312d9e7acd2c" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,8d78a506-fdcd-4040-9434-312d9e7acd2c.aspx</comments>
      <category>Decal</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=b9ff1f46-6242-4838-be22-d162643ec45b</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,b9ff1f46-6242-4838-be22-d162643ec45b.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,b9ff1f46-6242-4838-be22-d162643ec45b.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b9ff1f46-6242-4838-be22-d162643ec45b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It's been a while since I've said anything about Decal so today I've decided to share
some things about the next public release of Decal.  We've come a long way with
Adapter and our new rendering code so this upcoming release will likely be the last
time you guys see the old view system.  You can also expect a few other components
to be completely redone and at least one to be gone forever.
</p>
        <p>
There are two new features in Adapter that will be the focus of today's article. 
One will make life easier for devs, the other will make things much more interesting
for them.  Firstly, to make development and maintenance easier, I've added another
code hook-up attribute to the system, BaseEvent.  The purpose of BaseEvent is
very much like that of ControlEvent.  It works on the protected 'system' events
that exist as part of PluginBase (which mostly come from ACHooks in the Decal core). 
When applied to an event handler, these attributes will automatically hook up and
tear down the connection to that event.
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">[WireUpBaseEvents]<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> Test
: PluginBase<br />
{<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">protected</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> Startup()<br />
{<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
Network events</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
this is the old way of doing it</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//this.ServerDispatch
+= new EventHandler&lt;NetworkMessageEventArgs&gt;(Test_ServerDispatch);</span><br />
}<br /><br />
[BaseEvent(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"ServerDispatch"</span>)]<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> Test_ServerDispatch(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">object</span> sender,
NetworkMessageEventArgs e)<br />
{<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">throw</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> Exception(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"The
method or operation is not implemented."</span>);<br />
}<br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">protected</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">override</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> Shutdown()<br />
{<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
old tear down</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//this.ServerDispatch
-= this.Test_ServerDispatch;</span><br />
}<br />
}</span>
        </p>
        <p>
This may not look like much since once you add the attribute, you only save one
line of code.  What it does for you, is guarantee proper shutdown of all of your
events.  I've found many times in my code where my tear-down code missed several
events.
</p>
        <p>
Now for the more interesting stuff.  Plugin devs often want to share the functionality
of their plugin with others.  They also sometimes want to get information from
other plugins.  This can't always be implemented to suit all (depending on language/knowledge/etc)
so we've added a message notification system to Adapter to help things along. 
With the next release of Decal, all Adapter plugins will be able to consume a single
event "AdapterMessage", and they will be notified of all messages sent between plugins. 
Sending a message is very simple as well, you just derive an object from AdapterMessageEventArgs,
add in the information you want to share, and call SendAdapterMessage.
</p>
        <p>
I'll talk a bit more about messages tomorrow, along with some examples on how to use
it.
</p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=b9ff1f46-6242-4838-be22-d162643ec45b" />
      </body>
      <title>Coming soon to Decal</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,b9ff1f46-6242-4838-be22-d162643ec45b.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,b9ff1f46-6242-4838-be22-d162643ec45b.aspx</link>
      <pubDate>Tue, 06 Jun 2006 14:30:53 GMT</pubDate>
      <description>&lt;p&gt;
It's been a while since I've said anything about Decal so today I've decided to share
some things about the next public release of Decal.&amp;nbsp; We've come a long way with
Adapter and our new rendering code so this upcoming release will likely be the last
time you guys see the old view system.&amp;nbsp; You can also expect a few other components
to be completely redone and at least one to be gone forever.
&lt;/p&gt;
&lt;p&gt;
There are two new features in Adapter that will be the focus of today's article.&amp;nbsp;
One will make life easier for devs, the other will make things much more interesting
for them.&amp;nbsp; Firstly, to make development and maintenance easier, I've added another
code hook-up attribute to the system, BaseEvent.&amp;nbsp; The purpose of BaseEvent is
very much like that of ControlEvent.&amp;nbsp; It works on the protected 'system' events
that exist as part of PluginBase (which mostly come from ACHooks in the Decal core).&amp;nbsp;
When applied to an event handler, these attributes will automatically hook up and
tear down the connection to that event.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;[WireUpBaseEvents]&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; Test
: PluginBase&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;protected&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;override&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; Startup()&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
Network events&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
this is the old way of doing it&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//this.ServerDispatch
+= new EventHandler&amp;lt;NetworkMessageEventArgs&amp;gt;(Test_ServerDispatch);&lt;/span&gt;
&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
[BaseEvent(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"ServerDispatch"&lt;/span&gt;)]&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; Test_ServerDispatch(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;object&lt;/span&gt; sender,
NetworkMessageEventArgs e)&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;throw&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; Exception(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"The
method or operation is not implemented."&lt;/span&gt;);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;protected&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;override&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; Shutdown()&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
old tear down&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//this.ServerDispatch
-= this.Test_ServerDispatch;&lt;/span&gt;
&lt;br&gt;
}&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
This may not look like much&amp;nbsp;since once you add the attribute, you only save one
line of code.&amp;nbsp; What it does for you, is guarantee proper shutdown of all of your
events.&amp;nbsp; I've found many times in my code where my tear-down code missed several
events.
&lt;/p&gt;
&lt;p&gt;
Now for the more interesting stuff.&amp;nbsp; Plugin devs often want to share the functionality
of their plugin with others.&amp;nbsp; They also sometimes want to get information from
other plugins.&amp;nbsp; This can't always be implemented to suit all (depending on language/knowledge/etc)
so we've added a message notification system to Adapter to help things along.&amp;nbsp;
With the next release of Decal, all Adapter plugins will be able to consume a single
event "AdapterMessage", and they will be notified of all messages sent between plugins.&amp;nbsp;
Sending a message is very simple as well, you just derive an object from AdapterMessageEventArgs,
add in the information you want to share, and call SendAdapterMessage.
&lt;/p&gt;
&lt;p&gt;
I'll talk a bit more about messages tomorrow, along with some examples on how to use
it.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=b9ff1f46-6242-4838-be22-d162643ec45b" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,b9ff1f46-6242-4838-be22-d162643ec45b.aspx</comments>
      <category>Decal</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=7bde5ee8-7736-464a-8e38-47e514d0cb3d</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,7bde5ee8-7736-464a-8e38-47e514d0cb3d.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,7bde5ee8-7736-464a-8e38-47e514d0cb3d.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7bde5ee8-7736-464a-8e38-47e514d0cb3d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Brain drain's kept me from generating as much code as I'd need to start the series
describing the rewrite of ACAim.  I'm slowly chugging along at it and will start
posting once I'm a bit more comfortable with my progress.
</p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=7bde5ee8-7736-464a-8e38-47e514d0cb3d" />
      </body>
      <title>Delayed</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,7bde5ee8-7736-464a-8e38-47e514d0cb3d.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,7bde5ee8-7736-464a-8e38-47e514d0cb3d.aspx</link>
      <pubDate>Fri, 09 Dec 2005 19:52:32 GMT</pubDate>
      <description>&lt;p&gt;
Brain drain's kept me from generating as much code as I'd need to start the series
describing the rewrite of ACAim.&amp;nbsp; I'm slowly chugging along at it and will start
posting once I'm a bit more comfortable with my progress.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=7bde5ee8-7736-464a-8e38-47e514d0cb3d" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,7bde5ee8-7736-464a-8e38-47e514d0cb3d.aspx</comments>
      <category>Decal</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=98b3ad6b-6ad6-46c5-9d1d-8adc93b3f57d</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,98b3ad6b-6ad6-46c5-9d1d-8adc93b3f57d.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,98b3ad6b-6ad6-46c5-9d1d-8adc93b3f57d.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=98b3ad6b-6ad6-46c5-9d1d-8adc93b3f57d</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This is one of the reasons why we hate dealing with the rendering system:  It's
hacked.  We take over the call to create that AC makes and "do things" to the
object so that Decal knows when to draw.  Well it turns out that our repeating
textures were directly related to this.
</p>
        <p>
In the previous version of Decal, the rendering hack consisted of a proxy object,
a complete reimplementation of the DX object, that told us what was happening. 
Under this model, AC had a reference to our proxy, and we had the real object. 
In the new system, we decided to go with another method, vtable patching, which only
alters the particular functions we want.
</p>
        <p>
Well, as things would have it, Checksum created the initial hooking setup for Decal3,
not Haz or myself, so this little detail wasn't exactly fresh in our minds. 
So here we are, testing various ways of drawing to the screen, expecting the DX object
to behave normally, but we keep getting this weird repeating effect.  We found
a few methods to, ah... minimize the visible effect, but this backfired when multiple
huds were generated.
</p>
        <p>
Well it just so happened that Check popped up again while we were exploring the issue,
took a glance at our code, and "reminded" us about the hook.  We nearly died
when we realized what was actually happening.
</p>
        <p>
To keep Decal drawing on the screen on top of AC's 3D, we hook a DX function called
EndScene.  When AC calls this function, we send a signal to Decal to do all of
it's rendering work.  Well, in our new HUD implementation, we use a technique
that renders on an off-screen texture instead of the main window.  As part of
that operation however, we have to call EndScene.  It turns out that our repeating
texture was actually a recursion issue that somehow fixed itself before causing a
crash.  So we reworked the code a bit to call the real EndScene and no more issue.
</p>
        <p>
Just goes to show you how being too close to a particular project can bite you when
the bugs creep up.
</p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=98b3ad6b-6ad6-46c5-9d1d-8adc93b3f57d" />
      </body>
      <title>Beaten by our own hacks</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,98b3ad6b-6ad6-46c5-9d1d-8adc93b3f57d.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,98b3ad6b-6ad6-46c5-9d1d-8adc93b3f57d.aspx</link>
      <pubDate>Thu, 27 Oct 2005 17:09:23 GMT</pubDate>
      <description>&lt;p&gt;
This is one of the reasons why we hate dealing with the rendering system:&amp;nbsp; It's
hacked.&amp;nbsp; We take over the call to create that AC makes and "do things" to the
object so that Decal knows when to draw.&amp;nbsp; Well it turns out that our repeating
textures were directly related to this.
&lt;/p&gt;
&lt;p&gt;
In the previous version of Decal, the rendering hack consisted of a proxy object,
a complete reimplementation of the DX object, that told us what was happening.&amp;nbsp;
Under this model, AC had a reference to our proxy, and we had the real object.&amp;nbsp;
In the new system, we decided to go with another method, vtable patching, which only
alters the particular functions we want.
&lt;/p&gt;
&lt;p&gt;
Well, as things would have it, Checksum created the initial hooking setup for Decal3,
not Haz or myself, so this little detail wasn't exactly fresh in our minds.&amp;nbsp;
So here we are, testing various ways of drawing to the screen, expecting the DX object
to behave normally, but we keep getting this weird repeating effect.&amp;nbsp; We found
a few methods to, ah... minimize the visible effect, but this backfired when multiple
huds were generated.
&lt;/p&gt;
&lt;p&gt;
Well it just so happened that Check popped up again while we were exploring the issue,
took a glance at our code, and "reminded" us about the hook.&amp;nbsp; We nearly died
when we realized what was actually happening.
&lt;/p&gt;
&lt;p&gt;
To keep Decal drawing on the screen on top of AC's 3D, we hook a DX function called
EndScene.&amp;nbsp; When AC calls this function, we send a signal to Decal to do all of
it's rendering work.&amp;nbsp; Well, in our new HUD implementation, we use a technique
that renders on an off-screen texture instead of the main window.&amp;nbsp; As part of
that operation however, we have to call EndScene.&amp;nbsp; It turns out that our repeating
texture was actually a recursion issue that somehow fixed itself before causing a
crash.&amp;nbsp; So we reworked the code a bit to call the real EndScene and no more issue.
&lt;/p&gt;
&lt;p&gt;
Just goes to show you how being too close to a particular project can bite you when
the bugs creep up.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=98b3ad6b-6ad6-46c5-9d1d-8adc93b3f57d" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,98b3ad6b-6ad6-46c5-9d1d-8adc93b3f57d.aspx</comments>
      <category>Decal</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=c70dba6f-24d8-4ceb-96c1-0c16d9865988</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,c70dba6f-24d8-4ceb-96c1-0c16d9865988.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,c70dba6f-24d8-4ceb-96c1-0c16d9865988.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c70dba6f-24d8-4ceb-96c1-0c16d9865988</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p align="left">
Well,  I wanted to officially give an update on the status of my various projects. 
First, Plugin Manager has been updated and works the same as before.  Second,
I've started a project to redo the "engine" portion of NB2 in c#.  I'll be releasing
this once it's stable as a profile-runner.  It won't have any edit functions,
but at least you'll be able to use what you have.
</p>
        <p align="left">
I may continue this project as a replacement for NB2 in the future.  I haven't
really decided yet how to progress on that particular matter.
</p>
        <p align="left">
Lastly for the developers, we've been working hard on getting a new and better HUD
implementation, and I can honestly say we've made some progress.  Some of it
more humorous than others (There should only be *3* images in the shot).
</p>
        <p>
          <img src="http://www.dreagis.com/content/binary/imagehud.jpg" border="0" />
        </p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=c70dba6f-24d8-4ceb-96c1-0c16d9865988" />
      </body>
      <title>Updates and fun results</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,c70dba6f-24d8-4ceb-96c1-0c16d9865988.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,c70dba6f-24d8-4ceb-96c1-0c16d9865988.aspx</link>
      <pubDate>Thu, 20 Oct 2005 13:47:52 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p align=left&gt;
Well,&amp;nbsp; I wanted to officially give an update on the status of my various projects.&amp;nbsp;
First, Plugin Manager has been updated and works the same as before.&amp;nbsp; Second,
I've started a project to redo the "engine" portion of NB2 in c#.&amp;nbsp; I'll be releasing
this once it's stable as a profile-runner.&amp;nbsp; It won't have any edit functions,
but at least you'll be able to use what you have.
&lt;/p&gt;
&lt;p align=left&gt;
I may continue this project as a replacement for NB2 in the future.&amp;nbsp; I haven't
really decided yet how to progress on that particular matter.
&lt;/p&gt;
&lt;p align=left&gt;
Lastly for the developers, we've been working hard on getting a new and better HUD
implementation, and I can honestly say we've made some progress.&amp;nbsp; Some of it
more humorous than others (There should only be *3* images in the shot).
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://www.dreagis.com/content/binary/imagehud.jpg" border=0&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=c70dba6f-24d8-4ceb-96c1-0c16d9865988" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,c70dba6f-24d8-4ceb-96c1-0c16d9865988.aspx</comments>
      <category>Decal</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=345b870c-ae57-4564-9ac0-a44417025f10</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,345b870c-ae57-4564-9ac0-a44417025f10.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,345b870c-ae57-4564-9ac0-a44417025f10.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=345b870c-ae57-4564-9ac0-a44417025f10</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Well, after much pain and suffering, mostly on Haz's part, the new HUD system is finally
making progress, and since I'm in a mood, I'm going to talk a bit about how it will
work in the .NET Native Framework in an upcoming alpha release.
</p>
        <p>
Firstly, creating a HUD: 
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
hudRect defines the area of the screen on which we draw</span>
            <br />
Rectangle hudRect <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> Rectangle(10,
50, 300, 16);<br />
Decal.Adapter.Wrappers.HUD hud <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> Host.Huds.CreateHUD(hudRect);</span>
        </p>
        <p>
Now that we have a HUD, lets make it colorful!
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">Color
myBGColor <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> Color.FromArgb(64,
Color.Gray);<br />
hud.Fill(myBGColor);</span>
        </p>
        <p>
This gives us a nice, mostly transparent grey background.  Lastly, we'll render
some text:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">hud.BeginText(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Times
New Roman"</span>, 16);<br />
hud.WriteText(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"SomeText"</span>,
Color.White);<br />
hud.EndText();</span>
        </p>
        <p>
And that's IT!  Of course there are other neat features that need to be tweaked
a bit, and some issues that need to be solved, but we'll have progress or kill someone
trying!  Lastly I leave you with a potential outcome of the above code, of course
with some additions.
</p>
        <p>
          <img alt="working hud" hspace="0" src="http://www.paradoxlost.com/devel/workinghud.jpg" align="baseline" border="0" />
        </p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=345b870c-ae57-4564-9ac0-a44417025f10" />
      </body>
      <title>Heads Up!</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,345b870c-ae57-4564-9ac0-a44417025f10.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,345b870c-ae57-4564-9ac0-a44417025f10.aspx</link>
      <pubDate>Tue, 18 Oct 2005 04:29:40 GMT</pubDate>
      <description>&lt;p&gt;
Well, after much pain and suffering, mostly on Haz's part, the new HUD system is finally
making progress, and since I'm in a mood, I'm going to talk a bit about how it will
work in the .NET Native Framework in an upcoming alpha release.
&lt;/p&gt;
&lt;p&gt;
Firstly, creating a HUD: 
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
hudRect defines the area of the screen on which we draw&lt;/span&gt;
&lt;br&gt;
Rectangle hudRect &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; Rectangle(10,
50, 300, 16);&lt;br&gt;
Decal.Adapter.Wrappers.HUD hud &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; Host.Huds.CreateHUD(hudRect);&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Now that we have a HUD, lets make it colorful!
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Color
myBGColor &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; Color.FromArgb(64,
Color.Gray);&lt;br&gt;
hud.Fill(myBGColor);&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
This gives us a nice, mostly transparent grey background.&amp;nbsp; Lastly, we'll render
some text:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;hud.BeginText(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Times
New Roman"&lt;/span&gt;, 16);&lt;br&gt;
hud.WriteText(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"SomeText"&lt;/span&gt;,
Color.White);&lt;br&gt;
hud.EndText();&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
And that's IT!&amp;nbsp; Of course there are other neat features that need to be tweaked
a bit, and some issues that need to be solved, but we'll have progress or kill someone
trying!&amp;nbsp; Lastly I leave you with a potential outcome of the above code, of course
with some additions.
&lt;/p&gt;
&lt;p&gt;
&lt;img alt="working hud" hspace=0 src="http://www.paradoxlost.com/devel/workinghud.jpg" align=baseline border=0&gt;&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=345b870c-ae57-4564-9ac0-a44417025f10" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,345b870c-ae57-4564-9ac0-a44417025f10.aspx</comments>
      <category>Decal</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=03f92d0e-5be4-4c85-8f45-e4098a282146</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,03f92d0e-5be4-4c85-8f45-e4098a282146.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,03f92d0e-5be4-4c85-8f45-e4098a282146.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=03f92d0e-5be4-4c85-8f45-e4098a282146</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Since it's been quiet on most fronts with the alpha, our continued development, and
the impending patch, I just wanted to let everyone know things are rolling along. 
I've been having some trouble with my development setup the past few days that has
hindered me, but I've mostly solved that as of a short while ago.  Tonight I'll
be hitting the new rendering system hard, and may even have some good news or screenies
by the end of the week.
</p>
        <p>
Also, here's a quick overview of the status of the plugins/utilities that I maintain:
</p>
        <p style="MARGIN-RIGHT: 0px">
          <strong>
            <a href="http://www.paradoxlost.com/zl.html">Zone Launcher</a>
          </strong> --
Retired.  I did however hack up a quick version that works with the new launcher. 
It apparently has a naming conflict with some other app that was announced a few days
after I posted the update.  Oh well.
</p>
        <p style="MARGIN-RIGHT: 0px">
          <a href="http://www.paradoxlost.com/pm.html">
            <strong>Plugin Manager</strong>
          </a> --
Limbo.  I will be updating this as soon as I figure out how.
</p>
        <p style="MARGIN-RIGHT: 0px">
          <a href="http://paradox.acdev.org/mw2.php">
            <strong>Mouse Wheel 2</strong>
          </a> --
Actually updated already.  It just needs to stay current with our changes. 
It's also waiting on QueryKeyboardMap to work again.
</p>
        <p style="MARGIN-RIGHT: 0px">
          <strong>AC AIM</strong> -- Planning.  I will not exactly be updating this; 
I'll be completely rewriting it using the new .NET framework.  I'll also be using
that time to write a series of articles detailing the development process using the
new framework.
</p>
        <p style="MARGIN-RIGHT: 0px">
          <a href="http://www.paradoxlost.com/nb">
            <strong>Nerfus Buffus 2</strong>
          </a> --
In Progress.  NB is broken.  Very broken.  I will be updating it, but
I'm having to rewrite large chunks of it.  I don't really have an ETA other than
to say it will NOT be ready when decal releases.  If time permits, I plan to
do my best to have it out with in the month following decal.
</p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=03f92d0e-5be4-4c85-8f45-e4098a282146" />
      </body>
      <title>Quick Update</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,03f92d0e-5be4-4c85-8f45-e4098a282146.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,03f92d0e-5be4-4c85-8f45-e4098a282146.aspx</link>
      <pubDate>Wed, 21 Sep 2005 05:47:50 GMT</pubDate>
      <description>&lt;p&gt;
Since it's been quiet on most fronts with the alpha, our continued development, and
the impending patch, I just wanted to let everyone know things are rolling along.&amp;nbsp;
I've been having some trouble with my development setup the past few days that has
hindered me, but I've mostly solved that as of a short while ago.&amp;nbsp; Tonight I'll
be hitting the new rendering system hard, and may even have some good news or screenies
by the end of the week.
&lt;/p&gt;
&lt;p&gt;
Also, here's a quick overview of the status of the plugins/utilities that I maintain:
&lt;/p&gt;
&lt;p style="MARGIN-RIGHT: 0px"&gt;
&lt;strong&gt;&lt;a href="http://www.paradoxlost.com/zl.html"&gt;Zone Launcher&lt;/a&gt;&lt;/strong&gt; --
Retired.&amp;nbsp; I did however hack up a quick version that works with the new launcher.&amp;nbsp;
It apparently has a naming conflict with some other app that was announced a few days
after I posted the update.&amp;nbsp; Oh well.
&lt;/p&gt;
&lt;p style="MARGIN-RIGHT: 0px"&gt;
&lt;a href="http://www.paradoxlost.com/pm.html"&gt;&lt;strong&gt;Plugin Manager&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;--
Limbo.&amp;nbsp; I will be updating this as soon as I figure out how.
&lt;/p&gt;
&lt;p style="MARGIN-RIGHT: 0px"&gt;
&lt;a href="http://paradox.acdev.org/mw2.php"&gt;&lt;strong&gt;Mouse Wheel 2&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;--
Actually updated already.&amp;nbsp; It just needs to stay current with our changes.&amp;nbsp;
It's also waiting on QueryKeyboardMap to work again.
&lt;/p&gt;
&lt;p style="MARGIN-RIGHT: 0px"&gt;
&lt;strong&gt;AC AIM&lt;/strong&gt; -- Planning.&amp;nbsp; I will not exactly be updating this;&amp;nbsp;
I'll be completely rewriting it using the new .NET framework.&amp;nbsp; I'll also be using
that time to write a series of articles detailing the development process using the
new framework.
&lt;/p&gt;
&lt;p style="MARGIN-RIGHT: 0px"&gt;
&lt;a href="http://www.paradoxlost.com/nb"&gt;&lt;strong&gt;Nerfus Buffus 2&lt;/strong&gt;&lt;/a&gt;&amp;nbsp;--
In Progress.&amp;nbsp; NB is broken.&amp;nbsp; Very broken.&amp;nbsp; I will be updating it, but
I'm having to rewrite large chunks of it.&amp;nbsp; I don't really have an ETA other than
to say it will NOT be ready when decal releases.&amp;nbsp; If time permits, I plan to
do my best to have it out with in the month following decal.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=03f92d0e-5be4-4c85-8f45-e4098a282146" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,03f92d0e-5be4-4c85-8f45-e4098a282146.aspx</comments>
      <category>Decal</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=da4bb6fa-33ea-49c0-ba2a-86a22ad10767</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,da4bb6fa-33ea-49c0-ba2a-86a22ad10767.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,da4bb6fa-33ea-49c0-ba2a-86a22ad10767.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=da4bb6fa-33ea-49c0-ba2a-86a22ad10767</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Going further into how and why we're breaking things, I'd like to take a moment to
cover our protocol system.  As many of you know, we keep a huge xml file that
documents the known AC protocol.  Well, in the downtime, this file has seen MASSIVE
reorganization.  Ken has been kind enough to do this work almost alone. 
This has included updating all of the old packets that have changed with ToD and also
some much needed upgrades to the file for clarity, new features, and ease of use. 
Another point in this massive upgrade, was a change in the objects plugins use to
access protocol information:  IMessage[2] and IMessageMember.
</p>
        <p>
NB2 is a heavy user of protocol information.  Even though it uses filters, there
is still quite a bit of parsing that occurs.  The usual method for updating a
plugins protocol functions tends to only involve changing the packet type or renaming
a few fields.  This time around however, many, many packets were renumbered,
and with Ken's hard work, probably 3/4 of the fields have been renamed.  Then
comes the kicker, with the changes to IMessage the Member method no longer exists. 
This means NB2 won't even compile until I replace all of the calls to the
proper replacements.  Then I have to go back to changing the numbers and field
names.  One last fun bit is the inclusion of many new "types" in the protocol. 
This means that anyone parsing data might have to add some extra calls in their
code.  That may seem annoying at first, but it makes much more sense with the
changes.
</p>
        <p>
Another, but slightly less annoying, change keeping it down is the removal of several
methods from IPluginSite.  Any function that in the past used a memloc in PluginSite
has been removed and is now only found in ACHooks.  Well, NB2 is old enough that
ACHooks was still rather young, and didn't get used much.  These changes are
generally not very difficult.
</p>
        <p>
Next time we'll cover either the new .NET Plugin Framework or what will eventually
be Decal's new rendering engine (depending on how far into it I get).
</p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=da4bb6fa-33ea-49c0-ba2a-86a22ad10767" />
      </body>
      <title>Protocol / IMessage2 (or why NB2 won't be ready when Decal3 goes gold)</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,da4bb6fa-33ea-49c0-ba2a-86a22ad10767.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,da4bb6fa-33ea-49c0-ba2a-86a22ad10767.aspx</link>
      <pubDate>Thu, 15 Sep 2005 05:38:05 GMT</pubDate>
      <description>&lt;p&gt;
Going further into how and why we're breaking things, I'd like to take a moment to
cover our protocol system.&amp;nbsp; As many of you know, we keep a huge xml file that
documents the known AC protocol.&amp;nbsp; Well, in the downtime, this file has seen MASSIVE
reorganization.&amp;nbsp; Ken has been kind enough to do this work almost alone.&amp;nbsp;
This has included updating all of the old packets that have changed with ToD and also
some much needed upgrades to the file for clarity, new features, and ease of use.&amp;nbsp;
Another point in this massive upgrade, was a change in the objects plugins use to
access protocol information:&amp;nbsp; IMessage[2] and IMessageMember.
&lt;/p&gt;
&lt;p&gt;
NB2 is a heavy user of protocol information.&amp;nbsp; Even though it uses filters, there
is still quite a bit of parsing that occurs.&amp;nbsp; The usual method for updating a
plugins protocol functions tends to only involve changing the packet type or renaming
a few fields.&amp;nbsp; This time around however, many, many packets were renumbered,
and with Ken's hard work, probably 3/4 of the fields have been renamed.&amp;nbsp; Then
comes the kicker, with the changes to IMessage the Member method no longer exists.&amp;nbsp;
This means NB2 won't even compile until I replace&amp;nbsp;all of the&amp;nbsp;calls to the
proper replacements.&amp;nbsp; Then I have to go back to changing the numbers and field
names.&amp;nbsp; One last fun bit is the inclusion of many new "types" in the protocol.&amp;nbsp;
This means that anyone parsing data&amp;nbsp;might have to add some extra calls in their
code.&amp;nbsp; That may seem annoying at first, but it makes much more sense with the
changes.
&lt;/p&gt;
&lt;p&gt;
Another, but slightly less annoying, change keeping it down is the removal of several
methods from IPluginSite.&amp;nbsp; Any function that in the past used a memloc in PluginSite
has been removed and is now only found in ACHooks.&amp;nbsp; Well, NB2 is old enough that
ACHooks was still rather young, and didn't get used much.&amp;nbsp; These changes are
generally not very difficult.
&lt;/p&gt;
&lt;p&gt;
Next time we'll cover either the new .NET Plugin Framework or what will eventually
be Decal's new rendering engine (depending on how far into it I get).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=da4bb6fa-33ea-49c0-ba2a-86a22ad10767" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,da4bb6fa-33ea-49c0-ba2a-86a22ad10767.aspx</comments>
      <category>Decal</category>
      <category>Development</category>
    </item>
    <item>
      <trackback:ping>http://www.dreagis.com/Trackback.aspx?guid=6ee0307b-0c08-43d3-9370-017d93df47b9</trackback:ping>
      <pingback:server>http://www.dreagis.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.dreagis.com/PermaLink,guid,6ee0307b-0c08-43d3-9370-017d93df47b9.aspx</pingback:target>
      <dc:creator>Bob</dc:creator>
      <wfw:comment>http://www.dreagis.com/CommentView,guid,6ee0307b-0c08-43d3-9370-017d93df47b9.aspx</wfw:comment>
      <wfw:commentRss>http://www.dreagis.com/SyndicationService.asmx/GetEntryCommentsRss?guid=6ee0307b-0c08-43d3-9370-017d93df47b9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So many of you know that we've been "fixing" Decal lately.  Some of you are also
aware that we've broken compat with the old version.  What very few know, beyond
those of us doing the work, is just how extensive this breakage has been.  I'll
try to further explain the damage we've done, starting with a history lesson.
</p>
        <p>
In Decal 1.x, there were about 4 modules:  DenAgent, Inject, DecalNet, and
DecalControls.  DenAgent is the familiar windows gui everyone uses to configure
their plugins.  DecalControls is obviously the home for all of the buttons decal
shows in-game.  DecalNet is our network parser.  That leaves behind Inject. 
While the name implies that it might have something to do with injecting the Decal
code into AC, that's only a fraction of what it did.  Inject *WAS* Decal. 
It handled all of the hooking, all of the rendering, all of the input.  Every
interaction except reading packets passed through Inject in some way.
</p>
        <p>
When Cibo came back and gave us his vision of Decal2, we gained a few more modules: 
Decal, DecalFilters, and DecalInput.  The idea here was to shift core functionality
away from Inject and into Decal.  For plugins and filters this happened about
50%.  Decal now started and stopped "services" which loaded the plugins and filters. 
Unfortunately, Inject kept a tight grasp on the Rendering and Input code.  Even
though we now had a module named DecalInput, it only contained services to let plugins
generate input, it didn't help process input from AC at all.
</p>
        <p>
So this is where we arrive.  We've tried through the years to patch functionality
into this model with out breaking it.  We have so much legacy code and cross
referenced crap to maintain most of us babble code non-sense in our sleep.  Finally
ToD has given us a chance to fix all of that.  With the massive changes to AC's
rendering engine, our graphics code died.  We've hacked together a temp solution
so that we can get the rest of decal working, but we have grand plans indeed for a
new one.  We've also taken several more functions away from Inject, and will
continue to do so until it does little more than... well inject.
</p>
        <p>
Next we'll go over some of the more specific things that have been changed, or maybe
give a little more insight into the depths of Decal.
</p>
        <img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=6ee0307b-0c08-43d3-9370-017d93df47b9" />
      </body>
      <title>Decal Development 101:  If it ain't broke, take a chainsaw and a couple of grenades to it...</title>
      <guid isPermaLink="false">http://www.dreagis.com/PermaLink,guid,6ee0307b-0c08-43d3-9370-017d93df47b9.aspx</guid>
      <link>http://www.dreagis.com/PermaLink,guid,6ee0307b-0c08-43d3-9370-017d93df47b9.aspx</link>
      <pubDate>Mon, 12 Sep 2005 22:05:26 GMT</pubDate>
      <description>&lt;p&gt;
So many of you know that we've been "fixing" Decal lately.&amp;nbsp; Some of you are also
aware that we've broken compat with the old version.&amp;nbsp; What very few know, beyond
those of us doing the work, is just how extensive this breakage has been.&amp;nbsp; I'll
try to further explain the damage we've done, starting with a history lesson.
&lt;/p&gt;
&lt;p&gt;
In Decal 1.x, there were about&amp;nbsp;4 modules:&amp;nbsp; DenAgent, Inject, DecalNet, and
DecalControls.&amp;nbsp; DenAgent is the familiar windows gui everyone uses to configure
their plugins.&amp;nbsp; DecalControls is obviously the home for all of the buttons decal
shows in-game.&amp;nbsp; DecalNet is our network parser.&amp;nbsp; That leaves behind Inject.&amp;nbsp;
While the name implies that it might have something to do with injecting the Decal
code into AC, that's only a fraction of what it did.&amp;nbsp; Inject *WAS* Decal.&amp;nbsp;
It handled all of the hooking, all of the rendering, all of the input.&amp;nbsp; Every
interaction except reading packets passed through Inject in some way.
&lt;/p&gt;
&lt;p&gt;
When Cibo came back and gave us his vision of Decal2, we gained a few more modules:&amp;nbsp;
Decal, DecalFilters, and DecalInput.&amp;nbsp; The idea here was to shift core functionality
away from Inject and into Decal.&amp;nbsp; For plugins and filters this happened about
50%.&amp;nbsp; Decal now started and stopped "services" which loaded the plugins and filters.&amp;nbsp;
Unfortunately, Inject kept a tight grasp on the Rendering and Input code.&amp;nbsp; Even
though we now had a module named DecalInput, it only contained services to let plugins
generate input, it didn't help process input from AC at all.
&lt;/p&gt;
&lt;p&gt;
So this is where we arrive.&amp;nbsp; We've tried through the years to patch functionality
into this model with out breaking it.&amp;nbsp; We have so much legacy code and cross
referenced crap to maintain most of us babble code non-sense in our sleep.&amp;nbsp; Finally
ToD has given us a chance to fix all of that.&amp;nbsp; With the massive changes to AC's
rendering engine, our graphics code died.&amp;nbsp; We've hacked together a temp solution
so that we can get the rest of decal working, but we have grand plans indeed for a
new one.&amp;nbsp; We've also taken several more functions away from Inject, and will
continue to do so until it does little more than... well inject.
&lt;/p&gt;
&lt;p&gt;
Next we'll go over some of the more specific things that have been changed, or maybe
give a little more insight into the depths of Decal.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.dreagis.com/aggbug.ashx?id=6ee0307b-0c08-43d3-9370-017d93df47b9" /&gt;</description>
      <comments>http://www.dreagis.com/CommentView,guid,6ee0307b-0c08-43d3-9370-017d93df47b9.aspx</comments>
      <category>Decal</category>
      <category>Development</category>
    </item>
  </channel>
</rss>