public static void Open(ShadowProjector shadowProjector) { ShadowTextureUVEditor window = (ShadowTextureUVEditor)EditorWindow.GetWindow(typeof(ShadowTextureUVEditor)); #if UNITY_5_1 || UNITY_5_2 || UNITY_5_3 || UNITY_5_4 || UNITY_5_5 || UNITY_5_6 || UNITY_5_7 || UNITY_2017 || UNITY_2018 || UNITY_2019 || UNITY_2020 window.titleContent = new GUIContent("UV Editor"); #else window.title = "UV Editor"; #endif window._shadowProjector = shadowProjector; window._zoomLevel = 1.0f; window.Show(); }
public override void OnInspectorGUI() { serializedObject.Update(); ShadowProjector shadowProj = (ShadowProjector)target; shadowProj.GlobalProjectionDir = EditorGUILayout.Vector3Field("Global light direction", shadowProj.GlobalProjectionDir, null); shadowProj.GlobalShadowResolution = EditorGUILayout.Popup("Global shadow resolution", shadowProj.GlobalShadowResolution, _ShadowResOptions); shadowProj.GlobalShadowCullingMode = (GlobalProjectorManager.ProjectionCulling)EditorGUILayout.Popup("Global culling mode", (int)shadowProj.GlobalShadowCullingMode, _CullingOptions); shadowProj.EnableCutOff = EditorGUILayout.BeginToggleGroup("Cutoff shadow by distance?", shadowProj.EnableCutOff); shadowProj.GlobalCutOffDistance = EditorGUILayout.Slider("Global cutoff distance", shadowProj.GlobalCutOffDistance, 1.0f, 10000.0f); EditorGUILayout.EndToggleGroup(); shadowProj.GlobalFlipX = EditorGUILayout.Toggle("Global flip shadows X:", shadowProj.GlobalFlipX); shadowProj.GlobalFlipY = EditorGUILayout.Toggle("Global flip shadows Y:", shadowProj.GlobalFlipY); shadowProj.ShadowSize = EditorGUILayout.FloatField("Shadow size", shadowProj.ShadowSize); shadowProj.ShadowColor = EditorGUILayout.ColorField("Shadow color", shadowProj.ShadowColor); shadowProj.ShadowOpacity = EditorGUILayout.Slider("Shadow opacity", shadowProj.ShadowOpacity, 0.0f, 1.0f); shadowProj.IsLight = EditorGUILayout.Toggle("Is light?", shadowProj.IsLight); shadowProj._Material = (Material)EditorGUILayout.ObjectField("Shadow material", (Object)shadowProj._Material, typeof(Material), false, null); EditorGUILayout.LabelField("Shadow UV Rect"); UVRect = shadowProj.UVRect; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("X:", GUILayout.MaxWidth(15)); UVRect.x = EditorGUILayout.FloatField(UVRect.x, GUILayout.ExpandWidth(true)); EditorGUILayout.LabelField("Y:", GUILayout.MaxWidth(15)); UVRect.y = EditorGUILayout.FloatField(UVRect.y, GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("W:", GUILayout.MaxWidth(15)); UVRect.width = EditorGUILayout.FloatField(UVRect.width, GUILayout.ExpandWidth(true)); EditorGUILayout.LabelField("H:", GUILayout.MaxWidth(15)); UVRect.height = EditorGUILayout.FloatField(UVRect.height, GUILayout.ExpandWidth(true)); EditorGUILayout.EndHorizontal(); shadowProj.ShadowLocalOffset = EditorGUILayout.Vector3Field("Shadow local offset", shadowProj.ShadowLocalOffset, null); shadowProj.RotationAngleOffset = Quaternion.Euler(EditorGUILayout.Vector3Field("Rotation angle offsets", shadowProj.RotationAngleOffset.eulerAngles)); EditorGUILayout.LabelField("Freeze rotation:"); shadowProj.FreezeXRot = EditorGUILayout.Toggle(" X", shadowProj.FreezeXRot); shadowProj.FreezeYRot = EditorGUILayout.Toggle(" Y", shadowProj.FreezeYRot); shadowProj.FreezeZRot = EditorGUILayout.Toggle(" Z", shadowProj.FreezeZRot); if (GUILayout.Button("Open UV Editor")) { ShadowTextureUVEditor.Open(shadowProj); } shadowProj.AutoSizeOpacity = EditorGUILayout.BeginToggleGroup("Auto opacity/size:", shadowProj.AutoSizeOpacity); shadowProj.AutoSORaycastLayer = EditorGUILayout.LayerField("Raycast layer", shadowProj.AutoSORaycastLayer); shadowProj.AutoSORayOriginOffset = EditorGUILayout.FloatField("Ray origin offset", shadowProj.AutoSORayOriginOffset); shadowProj.AutoSOCutOffDistance = EditorGUILayout.FloatField("Cutoff distance", shadowProj.AutoSOCutOffDistance); shadowProj.AutoSOMaxScaleMultiplier = EditorGUILayout.FloatField("Max scale multiplier", shadowProj.AutoSOMaxScaleMultiplier); EditorGUILayout.EndToggleGroup(); shadowProj.UVRect = UVRect; if (!GlobalProjectorLayerExists()) { CheckGlobalProjectorLayer(); } serializedObject.ApplyModifiedProperties(); ApplyGlobalSettings(); if (GUI.changed) { EditorUtility.SetDirty(target); } }