/// <summary>
        /// Contruct from Editor Window Values
        /// </summary>
        /// <param name="b"></param>
        /// <param name="length"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        /// <param name="material"></param>
        /// <param name="highlightedMaterial"></param>
        /// <param name="scale"></param>
        /// <param name="offsetFactor"></param>
        #region /// Builder
        private static void BuildBlock(
            BlockList.Block b,
            int length,
            int width,
            int height,
            Material material,
            Material highlightedMaterial,
            Vector3 scale,
            float offsetFactor)
        {
            Transform  newTransform;
            GameObject previousTransform;
            bool       prefabCreated = false;

            if (b.pegCount >= 1)
            {
                GameObject obj           = new GameObject();
                GameObject newProtoBuild = obj;
                Vector3    offset        = new Vector3();
                SetNameOfProtBlock(length, width, height, material, newProtoBuild);
                newProtoBuild.transform.rotation = new Quaternion(0f, 0f, 0f, 0f);
                previousTransform = obj;
                for (int i = 0; i < length; i++)
                {
                    offset = GetNewStartingOffset(offsetFactor, i);
                    for (int j = 0; j < width; j++)
                    {
                        if (previousTransform != null)
                        {
                            Transform t = Instantiate <Transform>(b.obj.transform, newProtoBuild.transform) as Transform;
                            newTransform = t;
                            PCPi.scripts.Managers.BlockSettings bs = t.gameObject.AddComponent <PCPi.scripts.Managers.BlockSettings>();
                            t.transform.position = previousTransform.transform.position + offset;
                            GetMaterials(material, highlightedMaterial, bs);
                            previousTransform = newTransform.gameObject;
                        }
                        obj    = previousTransform;
                        offset = GetNewRowOffset(offsetFactor, i, j);
                    }
                    if (i == length - 1)
                    {
                        offset = new Vector3(0, 0, 0);
                        for (int k = 0; k < height; k++)
                        {
                            if (height > 1)
                            {
                                offset += new Vector3(0, offsetFactor, 0);
                                Transform t = Instantiate <Transform>(newProtoBuild.transform, newProtoBuild.transform) as Transform;
                                newTransform         = t;
                                t.transform.position = newProtoBuild.transform.position + offset;
                                previousTransform    = newTransform.gameObject;
                            }
                        }
                    }
                }
                finished  = CreatePlacementCollider(scale, newProtoBuild);
                newPrefab = newProtoBuild;
                Debug.Log("Prefab Created = " + prefabCreated);
            }
        }
 private static void GetMaterials(
     Material material,
     Material highlightedMaterial,
     PCPi.scripts.Managers.BlockSettings bs)
 {
     bs.defaultMaterial   = material;
     bs.highlightMaterial = highlightedMaterial;
 }