Man some of these are funny.
Great content, amusing presentation, and occasional irony. Nothing quite like the venting of profound, repressed, anonymous vandals.
Posted on Monday, May 14, 2007 by Unknown
TeamPlain has a goto work-item search that opens up workitems, oddly enough. I wanted to use the Firefox search box to fire this off.
Using the guide: Creating OpenSearch plug-ins for Firefox, I started putting together an XML OpenSearch description in notepad.
Needing an icon, I Gimped out the logo from the TeamPlain site, took it past the data: URI kitchen and popped it in.data:image/png,%89PNG%0D%...
Okay, so it's fugly, but it doesn't look too bad on the search bar.
A glance at the OpenSearch Specification provided final tips when deciding what data should go where. Now I had an XML file and needed someway to consume it
I tried installing the OpenSearch plug-in. I used the Error Console in Firefox, running the command window.external.AddSearchProvider(engineURL);
using a file:///
URI for the engineURL, but kept getting a URL formatting error. Error: Invalid argument passed to
window.sidebar.addSearchEngine:
Unsupported search engine
Source File: file:///C:/Program%20Files/Gran%20Paradiso
/components/nsSidebar.js
Line: 114
Initially I thought this was due to the URL in the XML definition file, so I hacked around with that for a bit, then when that yielded no fruit, I extended the error message in the mentioned .js to include the invalid URL. This was the URL to the XML doc, not the search URL inside the XML. Turns out the URL check in the .js that was throwing the exception was only regexing https?|ftp
, so needed a |file
appended.
Now that Firefox was playing nicely with the XML, it was happy to load it up and prompt me to install it.
And it worked!
Final code: (adjust search URL to your liking)
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:moz="http://www.mozilla.org/2006/browser/search/">
<ShortName>TeamPlain Item</ShortName>
<Description>Load items from local TeamPlain</Description>
<Image width="16"height="16">
data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%10%00%00%00%10%08%06%00%00%00%1F%F3%FFa%00%00%00%06bKGD%00%FF%00%FF%00%FF%A0%BD%A7%93%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%07tIME%07%D7%05%08%14%0D(U%8F%FC%B3%00%00%00%1DtEXtComment%00Created%20with%20The%20GIMP%EFd%25n%00%00%03%D9IDATx%DA%25%CD%D9SUu%1C%00%F0%EFo9%F7%2C%F7%C0%85%CBv7%B8%C8%A6%80%2C%CA%92%2CS%86%25%C94%9A%19%92%8D%CD%80a5M%0F-%D34%95V%0F%3Dd%F1%D0%83H%93%83%93%E2LS4c6%26%88T6%23%13h%0B(%16b%5C%20%05%94%ED%02%F7r%B7s~%BF_%0F%7D%FE%81%0F%02E%D5%B1E%00'%08%B0%10%80%88%80%C7%1F%DD%EB%AA%DB%B5%DB%93%E6pj%CB%8B%F3%A1%BE%8B%DF%DF%BD%DCsn%16!%0E%00%18%B0%84%20*%24%C0FD%60%20%00%1C%10%00%07%E0%04%030%02%C9%DE%7C%C7%E6%ED%0Du%17%2C%B1%AA%EC%EA%9D%B5vO%AE%8B%23%0A%18K%C0%23B0%03%83%14%8D%82D9%A2%98%0B%E0%F0%FF%CE1%80%10%1CVW%FC%B1%D3%96%07%D2%A52%FB%86%85%D1%C1%F5%B8%15%7F%9F%C4%23%20%04%05BM%10%94%80%A1Y%81%98%01%81%85%10%08%13%86%B9%82%00%9B%02%803%B9%B5%B9%B9%ACQM%A9%8E%9FYZmN%CF%F7%B6%B6%B4%94%9A%26%969%05%00L%11%B0(%81p%08%0BF%10y%EE%C57%F2%DF%7C%FB%C3%B2%D9%09%9Fp%3B%5Cq%C7%DA%DA%AB%AA%B7%D5%BC%EE%95Tg%AB%3D%DB%91%A7%258%DD%8E%B4%92-%E5%E5%F7%EENLE%5C%9E%8C%C4%8F%DANV%A4o%C8%B3%5C%BF%FA%E3%02%EA%1E%B8sTNZ4%03%E1%2F%A1%D8%F1~F%92%EEj%00%60%BE_~%EA%BB22%3CL%0B%0A%0B%CD%9D%F5%0D%B5%80h%C1z%C4%E8%1D%EF%B8%F5%3B%2F%B3%A7%80%03kO%D6%E6%B5Q%87%CB%93%B3%E4%AC%1B%84%05%FF%E6%A9%F9%F2%A4%E4%B8%D6%FBG%8E%BC%F5i%E7%E7'%261B~!%C0%F6L%D3%81%C1%F6%8ES%EF%B2%81%90%BF%B8%D3%A5%FC%FC%F1P0k%AC!gc%CD%0E%1By%A8~oE2)u%AF-%07%D5m%B9G%BD%91%08%BB%FAJ%EB%C1%CB%20%C3%2C2D%0Cd%12%18%1B%BD%11j9%F4%92%23%C1%9DP%F3%CF%AF%E3AyO%0ALX%E7%B8%CF7%ED%03%90%B5%CA%AC%D2%CA%3D%DF%5C%F9%F3%BD%7F%D7%C4%9D%1B%BE%D9N%A4%D14%9A%A4%E9TUtl%B3%EAD%C5%C9%BF%FD5%D95%13%10%93%3F%0C%FD%FD%C1%D6G%1E%DB%07%B2V%89%AC%9A%07%40Uu%D0%15%1BM%F3n%19_b%E7%E7%82%FCRaEE.%8E%D7uK%A2%A4%D3DU%CF-)%CA%9CY%89%5C%9C%F4%B3%9E%B8%EC%82%ADT%93%E3I%7C%9CUN%94%AD%18c%01%00%88%99k%8B%81%A8%C9V%98%40%1B%BB%CE~%DB%A2%11)%C9%08%09%2B%8B1%FB%99%D3_%1F%C2T.%8A%9A%2C%14%98%9D%0A%80baB%A5%60Z%40P%C1%11%60%99%83%96%98%8A%23%E1u%D5o%C2P%AA3%E3%E9%DBS%0F%AA%40%B0%01%82q9C%96%AC%95%D5%C0%CD%18%03%C9%EE%CE%40%C1%A5i%60%0C%012%10%60%C4%05%08Ch%C7%BF%F8j%87v%EB%C0%9A%D1%E3%8C%AE%AC%CF%F7F%85%E4%8E%81%B2%3F%CC-%D9%A1%B5%60%BF%F1%7C%D1%D8Zs%C5%FD%E3%1D%5D%DB%8D(X%11cB%20%02%94c%04%0DM%AFffm*-w%8F%8F%E83%C4p%AD%07%E6%A6%8E%7D%D2%FE%D9%ED%9B%7F%90%CC%EC%3C%F3%9D%C3%87%3D9%A1%A5%82I%93%AA%D2%A6%12c%FF%0B%AF%8Dv%9F91%22%A10%00%B6*%3A(%AA%B3%A0%B6~%DFw%FD%E7%DB%AE%0F%F7%9Fz%E2%E0%CB%CF%12%C5%EA%25%AAd%C3%0Au%3D%BC%BB%E9%A9k%17zO%9E%3B%DB%DDQ%B9%AB%B1%11%5B%157I%B1Y%B1C%D6%10h%AA%8E%25%01%9CqE%92l%C5i%E9Y%A9%B3%D3%13%D7%90%14%9A%87%00%07%A1%08%101%9C%E8%CE-%A9%9E%BF%E7%5B6%C3%91aI5BQ*%03%8D%86%C5%7Fs%3B%AAS%D9I.%22%00%00%00%00IEND%AEB%60%82
</Image>
<InputEncoding>UTF-8</InputEncoding>
<Url type="text/html" method="GET"
template="http://05rnb-dev02:8090/workitem.aspx?id={searchTerms}" />
<moz:SearchForm>searchFormURL</moz:SearchForm>
</OpenSearchDescription>
Posted on Tuesday, May 08, 2007 by Unknown
Posted on Thursday, May 03, 2007 by Unknown
Posted on Thursday, May 03, 2007 by Unknown
Posted on Thursday, May 03, 2007 by Unknown
pointList_VB = new VertexBuffer(typeof(CustomVertex.PositionColored),
12, device,
Usage.Dynamic | Usage.WriteOnly,
CustomVertex.PositionColored.Format,
Pool.Default);
CustomVertex.PositionColored[] verts = new CustomVertex.PositionColored[12];
// Triangle #1
verts[0].Position = new Vector3(0.0f, 0.5f, 0.0f);
verts[0].Color = Color.Blue.ToArgb();
verts[1].Position = new Vector3(0.5f, -0.2f, 0.0f);
verts[1].Color = Color.Green.ToArgb();
verts[2].Position = new Vector3(0.0f, 0.0f, 0.2f);
verts[2].Color = Color.Orange.ToArgb();
verts[3].Position = new Vector3(-0.5f, -0.2f, 0.0f);
verts[3].Color = Color.Red.ToArgb();
verts[4].Position = new Vector3(0.0f, 0.0f, -0.2f);
verts[4].Color = Color.Yellow.ToArgb();
verts[5].Position = new Vector3(0.5f, -0.2f, 0.0f);
verts[5].Color = Color.Green.ToArgb();
verts[6].Position = new Vector3(-0.5f, -0.2f, 0.0f);
verts[6].Color = Color.Red.ToArgb();
verts[7].Position = new Vector3(0.5f, -0.2f, 0.0f);
verts[7].Color = Color.Green.ToArgb();
verts[8].Position = new Vector3(0.0f, 0.0f, -0.2f);
verts[8].Color = Color.Yellow.ToArgb();
verts[9].Position = new Vector3(-0.5f, -0.2f, 0.0f);
verts[9].Color = Color.Red.ToArgb();
verts[10].Position = new Vector3(0.5f, -0.2f, 0.0f);
verts[10].Color = Color.Green.ToArgb();
verts[11].Position = new Vector3(0.0f, 0.0f, 0.2f);
verts[11].Color = Color.Orange.ToArgb();
pointList_VB.SetData(verts, 0, LockFlags.None);
d3dDevice.SetStreamSource(0, pointList_VB, 0);
d3dDevice.DrawPrimitives(PrimitiveType.PointList, 0, 7);
d3dDevice.Transform.World = Matrix.Multiply(
Matrix.RotationYawPitchRoll(Geometry.DegreeToRadian(p1.Rotation.X), Geometry.DegreeToRadian(p1.Rotation.Y), Geometry.DegreeToRadian(p1.Rotation.Z)),
Matrix.Translation(p1.Position.X, p1.Position.Y, 20.0f)
);
d3dDevice.DrawPrimitives(PrimitiveType.TriangleFan, 0, 5);
d3dDevice.DrawPrimitives(PrimitiveType.TriangleList, 6, 11);
Posted on Wednesday, May 02, 2007 by Unknown
private Vector3 p1rot;
private Vector3 p1rotInput;
private float p1rotForce;
public Vector3 Player1Rotation
{
get { return p1rot; }
set { p1rot = value; }
}
private Vector2 p1;
public Vector2 Player1Location
{
get { return p1; }
set { p1 = value; }
}
private Vector2 p1force;
private Vector2 p1spring;
private Vector2 p1grav;
class Player
{
private Vector2 _position;
private Vector2 _force;
private Vector3 _rotation;
private Vector3 _rotationInput;
private float _thrust;
private float _rotationForce;
public Vector2 Position
{
get { return _position; }
set { _position = value; }
}
.. blah blah properties. Thankfully we can use CTRL-R,E in Visual Studio to make a private variable into a public property; no mess, no fuss. There was also dome debate as to where to put the public properties w.r.t. their privates, I went with Turner and used the C++ style approach.
public void HandleInput(float dt)
{ ..blah.. }
}
Posted on Wednesday, May 02, 2007 by Unknown
private void Physics()
{
while (System.DateTime.Now.Ticks == Tick) { }
//time interval
long thisTick = System.DateTime.Now.Ticks;
float dt = (Tick - thisTick) / 100000.0f;
Tick = thisTick;
But that really feels dirty. All that hanging around waiting for the tick. - Spoon!
So, anyways. After a bit of ferreting, I found the Coding4Fun: Beginning Game Development article I'd been reading, which contains a section "All about timers". In summary, I grabbed the dxmutmisc.cs file from the sample code (in DirectX SDK\Samples\Managed\Common), commented out everything but NativeMethods and FrameworkTimer, called FrameworkTimer.Start()
before starting the Main loop, then did
private void Physics()
{
dt = (float)(FrameworkTimer.GetElapsedTime()*1000);
to get the time interval since the last physics call. The *1000 is just to get the number into something I could count on my fingers-and-toes.
And, with a little tweaking of cosmological constants, all was working again.Posted on Tuesday, May 01, 2007 by Unknown
Copyright ©
David Campey: Mind well | Powered by Blogger
Design by WP Lift | Blogger Template by NewBloggerThemes.com