void OnGUI() { #if UNITY_3_0 || UNITY_3_0_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5UNITY_4_0 || UNITY_4_0_1 || UNITY_4_1 || UNITY_4_2 //Layout fix for older versions? #else EditorGUIUtility.labelWidth = 100; #endif //Ctrl + w to close if (Event.current.Equals(Event.KeyboardEvent("^w"))) { Close(); GUIUtility.ExitGUI(); } /* * SETUP */ #if UNITY_3_0 || UNITY_3_0_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 EditorGUIUtility.LookLikeControls(); #endif ObjectMerge.alt = false; //Adjust colWidth as the window resizes colWidth = (position.width - UniMergeConfig.midWidth * 2 - UniMergeConfig.margin) / 2; if (mine == null || theirs == null || mine.GetType() != typeof(Object) || mine.GetType() != typeof(Object) ) //|| !AssetDatabase.GetAssetPath(mine).Contains(".unity") || !AssetDatabase.GetAssetPath(theirs).Contains(".unity")) { merged = GUI.enabled = false; } if (GUILayout.Button("Merge")) { Merge(mine, theirs); GUIUtility.ExitGUI(); } GUI.enabled = merged; GUILayout.BeginHorizontal(); { GUI.enabled = mineContainer; if (!GUI.enabled) { merged = false; } if (GUILayout.Button("Unpack Mine")) { DestroyImmediate(theirsContainer); List <Transform> tmp = new List <Transform>(); foreach (Transform t in mineContainer.transform) { tmp.Add(t); } foreach (Transform t in tmp) { t.parent = null; } DestroyImmediate(mineContainer); mySceneData.ApplySettings(); } GUI.enabled = theirsContainer; if (!GUI.enabled) { merged = false; } if (GUILayout.Button("Unpack Theirs")) { DestroyImmediate(mineContainer); List <Transform> tmp = new List <Transform>(); foreach (Transform t in theirsContainer.transform) { tmp.Add(t); } foreach (Transform t in tmp) { t.parent = null; } DestroyImmediate(theirsContainer); theirSceneData.ApplySettings(); } } GUILayout.EndHorizontal(); GUI.enabled = true; ObjectMerge.DrawRowHeight(); GUILayout.BeginHorizontal(); { GUILayout.BeginVertical(GUILayout.Width(colWidth)); { #if UNITY_3_0 || UNITY_3_0_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 mine = EditorGUILayout.ObjectField("Mine", mine, typeof(Object)); #else mine = EditorGUILayout.ObjectField("Mine", mine, typeof(Object), true); #endif } GUILayout.EndVertical(); GUILayout.Space(UniMergeConfig.midWidth * 2); GUILayout.BeginVertical(GUILayout.Width(colWidth)); { #if UNITY_3_0 || UNITY_3_0_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 theirs = EditorGUILayout.ObjectField("Theirs", theirs, typeof(Object)); #else theirs = EditorGUILayout.ObjectField("Theirs", theirs, typeof(Object), true); #endif } GUILayout.EndVertical(); } GUILayout.EndHorizontal(); if (mine == null || theirs == null) { merged = false; } if (merged) { scroll = GUILayout.BeginScrollView(scroll); //Fog ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.fog == theirSceneData.fog; } return(same); }, left = delegate { if (mine) { mySceneData.fog = EditorGUILayout.Toggle("Fog", mySceneData.fog); } }, leftButton = delegate { mySceneData.fog = theirSceneData.fog; }, rightButton = delegate { theirSceneData.fog = mySceneData.fog; }, right = delegate { if (theirs) { theirSceneData.fog = EditorGUILayout.Toggle("Fog", theirSceneData.fog); } }, drawButtons = mine && theirs }); //Fog Color ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.fogColor == theirSceneData.fogColor; } return(same); }, left = delegate { if (mine) { mySceneData.fogColor = EditorGUILayout.ColorField("Fog Color", mySceneData.fogColor); } }, leftButton = delegate { mySceneData.fogColor = theirSceneData.fogColor; }, rightButton = delegate { theirSceneData.fogColor = mySceneData.fogColor; }, right = delegate { if (theirs) { theirSceneData.fogColor = EditorGUILayout.ColorField("Fog Color", theirSceneData.fogColor); } }, drawButtons = mine && theirs }); //Fog Mode ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.fogMode == theirSceneData.fogMode; } return(same); }, left = delegate { if (mine) { mySceneData.fogMode = (FogMode)EditorGUILayout.EnumPopup("Fog Mode", mySceneData.fogMode); } }, leftButton = delegate { mySceneData.fogMode = theirSceneData.fogMode; }, rightButton = delegate { theirSceneData.fogMode = mySceneData.fogMode; }, right = delegate { if (theirs) { theirSceneData.fogMode = (FogMode)EditorGUILayout.EnumPopup("Fog Mode", theirSceneData.fogMode); } }, drawButtons = mine && theirs }); //Fog Density ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.fogDensity == theirSceneData.fogDensity; } return(same); }, left = delegate { if (mine) { mySceneData.fogDensity = EditorGUILayout.FloatField("Linear Density", mySceneData.fogDensity); } }, leftButton = delegate { mySceneData.fogDensity = theirSceneData.fogDensity; }, rightButton = delegate { theirSceneData.fogDensity = mySceneData.fogDensity; }, right = delegate { if (theirs) { theirSceneData.fogDensity = EditorGUILayout.FloatField("Linear Density", theirSceneData.fogDensity); } }, drawButtons = mine && theirs }); //Linear Fog Start ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.fogStartDistance == theirSceneData.fogStartDistance; } return(same); }, left = delegate { if (mine) { mySceneData.fogStartDistance = EditorGUILayout.FloatField("Linear Fog Start", mySceneData.fogStartDistance); } }, leftButton = delegate { mySceneData.fogStartDistance = theirSceneData.fogStartDistance; }, rightButton = delegate { theirSceneData.fogStartDistance = mySceneData.fogStartDistance; }, right = delegate { if (theirs) { theirSceneData.fogStartDistance = EditorGUILayout.FloatField("Linear Fog Start", theirSceneData.fogStartDistance); } }, drawButtons = mine && theirs }); //Linear Fog End ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.fogEndDistance == theirSceneData.fogEndDistance; } return(same); }, left = delegate { if (mine) { mySceneData.fogEndDistance = EditorGUILayout.FloatField("Linear Fog End", mySceneData.fogEndDistance); } }, leftButton = delegate { mySceneData.fogEndDistance = theirSceneData.fogEndDistance; }, rightButton = delegate { theirSceneData.fogEndDistance = mySceneData.fogEndDistance; }, right = delegate { if (theirs) { theirSceneData.fogEndDistance = EditorGUILayout.FloatField("Linear Fog End", theirSceneData.fogEndDistance); } }, drawButtons = mine && theirs }); //Ambient Light ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.ambientLight == theirSceneData.ambientLight; } return(same); }, left = delegate { if (mine) { mySceneData.ambientLight = EditorGUILayout.ColorField("Ambient Light", mySceneData.ambientLight); } }, leftButton = delegate { mySceneData.ambientLight = theirSceneData.ambientLight; }, rightButton = delegate { theirSceneData.ambientLight = mySceneData.ambientLight; }, right = delegate { if (theirs) { theirSceneData.ambientLight = EditorGUILayout.ColorField("Ambient Light", theirSceneData.ambientLight); } }, drawButtons = mine && theirs }); //Skybox ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.skybox == theirSceneData.skybox; } return(same); }, left = delegate { if (mine) #if UNITY_3_0 || UNITY_3_0_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 { mySceneData.skybox = (Material)EditorGUILayout.ObjectField("Skybox Material", mySceneData.skybox, typeof(Material)); } #else { mySceneData.skybox = (Material)EditorGUILayout.ObjectField("Skybox Material", mySceneData.skybox, typeof(Material), false); } #endif }, leftButton = delegate { mySceneData.skybox = theirSceneData.skybox; }, rightButton = delegate { theirSceneData.skybox = mySceneData.skybox; }, right = delegate { if (theirs) #if UNITY_3_0 || UNITY_3_0_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 { theirSceneData.skybox = (Material)EditorGUILayout.ObjectField("Skybox Material", theirSceneData.skybox, typeof(Material)); } #else { theirSceneData.skybox = (Material)EditorGUILayout.ObjectField("Skybox Material", theirSceneData.skybox, typeof(Material), false); } #endif }, drawButtons = mine && theirs }); //Halo Strength ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.haloStrength == theirSceneData.haloStrength; } return(same); }, left = delegate { if (mine) { mySceneData.haloStrength = EditorGUILayout.FloatField("Halo Strength", mySceneData.haloStrength); } }, leftButton = delegate { mySceneData.haloStrength = theirSceneData.haloStrength; }, rightButton = delegate { theirSceneData.haloStrength = mySceneData.haloStrength; }, right = delegate { if (theirs) { theirSceneData.haloStrength = EditorGUILayout.FloatField("Halo Strength", theirSceneData.haloStrength); } }, drawButtons = mine && theirs }); //Flare Strength ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.flareStrength == theirSceneData.flareStrength; } return(same); }, left = delegate { if (mine) { mySceneData.flareStrength = EditorGUILayout.FloatField("Flare Strength", mySceneData.flareStrength); } }, leftButton = delegate { mySceneData.flareStrength = theirSceneData.flareStrength; }, rightButton = delegate { theirSceneData.flareStrength = mySceneData.flareStrength; }, right = delegate { if (theirs) { theirSceneData.flareStrength = EditorGUILayout.FloatField("Flare Strength", theirSceneData.flareStrength); } }, drawButtons = mine && theirs }); //Flare Fade Speed ObjectMerge.DrawGenericRow(new ObjectMerge.GenericRowArguments { indent = 0, colWidth = colWidth, compare = delegate { bool same = GenericCompare(); if (same) { same = mySceneData.flareFadeSpeed == theirSceneData.flareFadeSpeed; } return(same); }, left = delegate { if (mine) { mySceneData.flareFadeSpeed = EditorGUILayout.FloatField("Flare Fade Speed", mySceneData.flareFadeSpeed); } }, leftButton = delegate { mySceneData.flareFadeSpeed = theirSceneData.flareFadeSpeed; }, rightButton = delegate { theirSceneData.flareFadeSpeed = mySceneData.flareFadeSpeed; }, right = delegate { if (theirs) { theirSceneData.flareFadeSpeed = EditorGUILayout.FloatField("Flare Fade Speed", theirSceneData.flareFadeSpeed); } }, drawButtons = mine && theirs }); GUILayout.EndScrollView(); } }