Easily create sound effects for games.

This is a very simple tool for making sound effects for games.

http://www.bfxr.net/
More..

[C#, OpenGL] 3D coordinates to 2D coordinates


This code will convert 3D coordinates to 2D coordinates. It is taken from around the web and put together to work with C# and OpenGL (OpenTK actually). If you use something else you will probably have to change the code somewhat, but that should not be a huge problem I think.
private Point WorldToScreen(Vector3 p)
    {
      Matrix4 model, proj;
      int[] view = new int[4];

      GL.GetFloat(GetPName.ModelviewMatrix, out model);
      GL.GetFloat(GetPName.ProjectionMatrix, out proj);
      GL.GetInteger(GetPName.Viewport, view);

      double wx = 0, wy = 0, wz = 0;

      int d = Glu.gluProject
                      (
                        p.X, 
                        p.Y, 
                        p.Z, 
                        model, 
                        proj, 
                        view, 
                        ref wx, 
                        ref wy, 
                        ref wz
                      );

      return new Point((int)wx, (int)wy);
    }
int gluProject
  (
   float objx, 
   float objy, 
   float objz, 
   Matrix4 modelMatrix, 
   Matrix4 projMatrix, 
   int[] viewport, 
   ref double winx, 
   ref double winy, 
   ref double winz
  )
  {
      Vector4 _in;
      Vector4 _out;

      _in.X = objx;
      _in.Y = objy;
      _in.Z = objz;
      _in.W = 1.0f;
      //__gluMultMatrixVecd(modelMatrix, in, out); // Commented out by code author
      //__gluMultMatrixVecd(projMatrix, out, in);  // Commented out by code author
      //TODO: check if multiplication is in right order
      _out = Vector4.Transform(_in, modelMatrix);
      _in = Vector4.Transform(_out, projMatrix);

      if (_in.W == 0.0)
        return (0);
      _in.X /= _in.W;
      _in.Y /= _in.W;
      _in.Z /= _in.W;
      /* Map x, y and z to range 0-1 */
      _in.X = _in.X * 0.5f + 0.5f;
      _in.Y = _in.Y * 0.5f + 0.5f;
      _in.Z = _in.Z * 0.5f + 0.5f;

      /* Map x,y to viewport */
      _in.X = _in.X * viewport[2] + viewport[0];
      _in.Y = _in.Y * viewport[3] + viewport[1];

      winx = _in.X;
      winy = _in.Y;
      winz = _in.Z;
      return (1);
  }
More..

[C#] Console output in a form / textbox

Source:
http://sourceforge.net/projects/consolewidget/

Setup:
  1. Download the files.
  2. Go to our project and find the references
  3. Add the .dll
  4. Go to the form-designer and create a new textbox
  5. Go to the xx.Designer.cs ***
  6. Find :
      this.textBox1 = new System.Windows.Forms.TextBox();
    and
      private System.Windows.Forms.TextBox textBox1;
  7. Replace them with :
      private ConsoleWidget.ConsoleTextBox textBox1;
    and
      this.textBox1 = new ConsoleWidget.ConsoleTextBox();
*** Changing auto-generated files might not be such a good idea. Maybe the "Controls" already have the ConsoleForm. Then you can just drag-n-drop it and skip step 4+.

Bonus: If you want to make you WHOLE form a console-output-form you can do like this:
Change Form1 : Form into Form1 : ConsoleWidget.ConsoleForm
More..

[C#] Struct to Byte-array and back



Setup / Code:
The struct we will send.
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct datastruct
{
 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] // Max length of string
 public string str;
 public float x;
 public float y;
}

This converts the struct into an array of bytes.
public static Byte[] SerializeMessage<T>(T msg) where T : struct
{
 int objsize = Marshal.SizeOf(typeof(T));
 Byte[] ret = new Byte[objsize];
 IntPtr buff = Marshal.AllocHGlobal(objsize);
 Marshal.StructureToPtr(msg, buff, true);
 Marshal.Copy(buff, ret, 0, objsize);
 Marshal.FreeHGlobal(buff);
 return ret;
}

This converts it back into a struct.
public static T DeserializeMsg(Byte[] data) where T : struct 
{
 int objsize = Marshal.SizeOf(typeof(T));
 IntPtr buff = Marshal.AllocHGlobal(objsize);
 Marshal.Copy(data, 0, buff, objsize);
 T retStruct = (T)Marshal.PtrToStructure(buff, typeof(T));
 Marshal.FreeHGlobal(buff);
 return retStruct;
}

Usage:
Struct to byte-array.
yourstruct info = new yourstruct();
info.str= "hej";
info.x = 2;
info.y = 4;
byte[] bytearray = MarshalHelper.MarshalHelper.SerializeMessage<datastruct>(info);

Byte-array to struct.
byte[] data  = bytearray; // from above code
object d = MarshalHelper.MarshalHelper.DeserializeMsg<datastruct>(data);
datastruct ds = (datastruct)d;

"Output"

ds.str = hej
ds.x = 2
ds.y = 4
More..

Syntax highlighting in blogger.

Source:
http://alexgorbatchev.com/SyntaxHighlighter/manual/api/autoloader.html

Usage:
<pre class="brush: csharp">
Code goes here.
</pre>

Result:
public class SyntaxHighlight
{
  public Testing() 
  {
  }
 
  public void Method() 
  {
    int x = 9;
  }
}
More..