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();
    }
Beispiel #2
0
    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);
        }
    }