public static void InitializeDirections()
{
float z = (1f + Mathf.Sqrt(5f)) / 2f;
directions = new Vector3[60];
directions[0] = new Vector3(0f, 1f, 3f * z);
directions[1] = new Vector3(0f, 1f, -3f * z);
directions[2] = new Vector3(0f, -1f, 3f * z);
directions[3] = new Vector3(0f, -1f, -3f * z);
directions[4] = new Vector3(1f, 3f * z, 0f);
directions[5] = new Vector3(1f, -3f * z, 0f);
directions[6] = new Vector3(-1f, 3f * z, 0f);
directions[7] = new Vector3(-1f, -3f * z, 0f);
directions[8] = new Vector3(3f * z, 0f, 1f);
directions[9] = new Vector3(3f * z, 0f, -1f);
directions[10] = new Vector3(-3f * z, 0f, 1f);
directions[11] = new Vector3(-3f * z, 0f, -1f);
int offset = 12;
offset = PermuteCuboid(directions, offset, 2f, 1f + (2f * z), z);
offset = PermuteCuboid(directions, offset, 1f + (2f * z), z, 2f);
offset = PermuteCuboid(directions, offset, z, 2f, 1f + (2f * z));
offset = PermuteCuboid(directions, offset, 1f, 2f + z, 2f * z);
offset = PermuteCuboid(directions, offset, 2f + z, 2f * z, 1f);
offset = PermuteCuboid(directions, offset, 2f * z, 1f, 2f + z);
for (int i = 0; i < directions.Length; i++)
{
directions[i] = directions[i].normalized;
}
}