Monday, August 29, 2011

Monday Mech


Sunday, August 28, 2011

Sunday Mech


Saturday, August 27, 2011

Another Mech Before I Sleep...

Last one, I promise. For today at least! :-)


An afternoon designing mecha...

Is an afternoon well spent!


And Another Mech!


Another Mech.

I took more care with this one, to make sure that the joints are articulated.


Friday, August 26, 2011

Thursday, August 25, 2011

Heap Queue in C#

A minimal re-implementation of the Python heapq module.

public class HeapQ<T> where T : IComparable
{
    List<T> items;

    public HeapQ ()
    {
        items = new List<T> ();
    }

    public bool Empty {
        get { return items.Count == 0; }
    }

    public T First {
        get {
            if (items.Count > 1) {
                return items[0];
            }
            return items[items.Count - 1];
        }
    }

    public void Push (T item)
    {
        items.Add (item);
        SiftDown (0, items.Count - 1);
    }

    public T Pop ()
    {
        T item;
        var last = items[items.Count - 1];
        items.RemoveAt (items.Count - 1);
        if (items.Count > 0) {
            item = items[0];
            items[0] = last;
            SiftUp (0);
        } else {
            item = last;
        }
        return item;
    }

    void SiftDown (int startpos, int pos)
    {
        var newitem = items[pos];
        while (pos > startpos) {
            var parentpos = (pos - 1) >> 1;
            var parent = items[parentpos];
            if (parent.CompareTo (newitem) <= 0)
                break;
            items[pos] = parent;
            pos = parentpos;
        }
        items[pos] = newitem;
    }

    void SiftUp (int pos)
    {
        var endpos = items.Count;
        var startpos = pos;
        var newitem = items[pos];
        var childpos = 2 * pos + 1;
        while (childpos < endpos) {
            var rightpos = childpos + 1;
            if (rightpos < endpos && items[rightpos].CompareTo (items[childpos]) <= 0)
                childpos = rightpos;
            items[pos] = items[childpos];
            pos = childpos;
            childpos = 2 * pos + 1;
        }
        items[pos] = newitem;
        SiftDown (startpos, pos);
    }
    
}


Friday, August 05, 2011

Thing's I like about Mac.


This is the default icon for a Windows computer in OSX Finder. If you can't see the joke... look closely!

Unity3D 3.4 Enhancements

I enjoy modifying cars, so that they exceed their stock limitations. When you've fixed all the easy stuff on a vehicle, you move onto the fine tuning, which might only yield you one or two percent performance increase per modification. The latest version of Unity contains some very fine fixes, which are starting to make it run like a well tuned rapid development machine!

C# Script files now get the correct name when you first add them to the project. The ritual of "Create Script, Open, Rename, Drop onto Game Object" is gone forever! Now you only need to create the script, and Unity gives the class the right name automagically.

The second great fix is that you can now create a prefab simply by dragging an object from your scene hierarchy straight into the project view. No more tedious Create Prefab, Drop object Onto Prefab, Rename Prefab. It is just... drag... and drop!

Popular Posts