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(); }