public EditorModel(GameObject assetPrefab)
        {
            prefab = assetPrefab;

            saveAssetFolder = System.IO.Path.GetDirectoryName(AssetDatabase.GetAssetPath(prefab));

            assetInstance = GameObject.Instantiate(assetPrefab) as GameObject;
            assetInstance.name = assetPrefab.name;
            assetInstance.SetActive(true);

            // Check for LocalSettings on the prefab and use that if possible
            LocalSettings = assetInstance.GetComponentInChildren<LocalSettings>();
            if (LocalSettings != null) {
            UseLocalSettings = true;
            BlobModel = assetInstance.AddComponent<ABlobModel>().InitWithExistingBlob(LocalSettings.gameObject);
            } else {
            Mesh blobMesh = AssetDatabase.LoadAssetAtPath("Assets/BlobOMatic/BlobMesh.asset", typeof(Mesh)) as Mesh;
            BlobModel = assetInstance.AddComponent<ABlobModel>().Init(blobMesh);
            if (!ICanHasShadow) return; // Not a valid model, bugger off!

            LocalSettings = BlobModel.BlobRenderer.gameObject.AddComponent<LocalSettings>().CopyGlobalSettings();

            saveAssetFolder +=  "/" + prefab.name + "WithBlob";
            }

            // Collect original layers and set everything to blob layer
            foreach (Transform t in assetInstance.GetComponentsInChildren<Transform>(true))
            originalLayers[t.gameObject] = t.gameObject.layer;
            assetInstance.SetLayerRecursively(BlobOMatic.EditorLayer);

            assetInstance.SetActive(false);
            assetInstance.SetHideFlagsRecursively(HideFlags.HideAndDontSave);

            RenderBlob();
        }
        public ModelPreview(EditorModel model)
        {
            previewModel = model;

            // Preview texture
            int previewSize = ModelGUI.TextureSize * 2;
            Preview = new RenderTexture(previewSize, previewSize, 24);
            Preview.hideFlags = HideFlags.HideInInspector | HideFlags.DontSave;

            // Preview scene
            previewRoot = new GameObject(model.Name + "Preview");
            previewRoot.transform.position = model.BlobModel.transform.position;

            model.BlobModel.transform.parent = previewRoot.transform;

            groundPlane = CreateGroundPlane(model.ModelBounds);
            groundPlane.transform.position = new Vector3(0, model.ModelBounds.min.y - model.ModelBounds.size.y * 0.01f, 0);
            groundPlane.transform.parent = previewRoot.transform;

            previewRoot.SetHideFlagsRecursively(HideFlags.HideAndDontSave);

            RenderPreview();
        }