Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using UnityEditor;
- using UnityEngine;
- using UnityStandardAssets.ImageEffects;
- public static class EditorEffects {
- private static bool enable {
- get {
- return EditorPrefs.GetBool("EffectsEnabled", true);
- }
- set {
- EditorPrefs.SetBool("EffectsEnabled", value);
- }
- }
- [MenuItem("Edit/Editor Effects #e", false, 0)]
- private static void EnableDisable() {
- enable = !enable;
- if(!enable)
- foreach(SceneView view in SceneView.sceneViews)
- foreach(var effect in view.camera.GetComponents<PostEffectsBase>())
- GameObject.DestroyImmediate(effect);
- SceneView.RepaintAll();
- }
- [InitializeOnLoadMethod]
- private static void Init() {
- SceneView.onSceneGUIDelegate += (view) => {
- if(!view.camera)
- return;
- if(!enable || !Camera.main || !Camera.main.isActiveAndEnabled) {
- RemoveEffects(view.camera);
- RemovePostEffects(view.camera);
- return;
- }
- SyncEffects(Camera.main, view.camera);
- SyncPostEffects(Camera.main, view.camera);
- };
- }
- private static void RemoveEffects(Camera cam) {
- foreach(var comp in cam.GetComponents<ImageEffectBase>())
- if(comp)
- GameObject.DestroyImmediate(comp, false);
- }
- private static void SyncEffects(Camera source, Camera dest) {
- var sourceEffects = new List<ImageEffectBase>();
- source.GetComponents<ImageEffectBase>(sourceEffects);
- Component destEffect;
- foreach(var sourceEffect in sourceEffects)
- if(sourceEffect) {
- destEffect = dest.GetComponent(sourceEffect.GetType());
- if(!destEffect)
- destEffect = dest.gameObject.AddComponent(sourceEffect.GetType());
- EditorUtility.CopySerialized(sourceEffect, destEffect);
- }
- foreach(var comp in dest.GetComponents<ImageEffectBase>())
- if(!comp || !source.GetComponent(comp.GetType()))
- GameObject.DestroyImmediate(comp, false);
- }
- private static void RemovePostEffects(Camera cam) {
- foreach(var comp in cam.GetComponents<PostEffectsBase>())
- if(comp)
- GameObject.DestroyImmediate(comp, false);
- }
- private static void SyncPostEffects(Camera source, Camera dest) {
- var sourceEffects = new List<PostEffectsBase>();
- source.GetComponents<PostEffectsBase>(sourceEffects);
- Component destEffect;
- foreach(var sourceEffect in sourceEffects)
- if(sourceEffect) {
- destEffect = dest.GetComponent(sourceEffect.GetType());
- if(!destEffect)
- destEffect = dest.gameObject.AddComponent(sourceEffect.GetType());
- EditorUtility.CopySerialized(sourceEffect, destEffect);
- }
- foreach(var comp in dest.GetComponents<PostEffectsBase>())
- if(!comp || !source.GetComponent(comp.GetType()))
- GameObject.DestroyImmediate(comp, false);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement