コード例 #1
0
        static void BakeUpdate( )
        {
            var p = Lightmapping.buildProgress;

            if (EditorUtility.DisplayCancelableProgressBar("Boiling Prefabs", "Baking them lights...", p))
            {
                Lightmapping.ForceStop( );

                BakeFinished( );
            }
        }
コード例 #2
0
    void OnGUI()
    {
        _pathToScenes = EditorGUILayout.TextField("Path To Scenes", _pathToScenes);
        GUILayout.Space(1);
        _lightMapResIndex = EditorGUILayout.Popup("Lightmap resolution", _lightMapResIndex, _lightmapResolution);

        GUILayout.Space(1);

        var paths = new string[] { _pathToScenes };

        var p    = AssetDatabase.FindAssets("t:scene", paths);
        var list = new List <string>();

        _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition);
        foreach (var item in p)
        {
            var i = AssetDatabase.GUIDToAssetPath(item);
            list.Add(i);
            if (!_sceneToggle.ContainsKey(i))
            {
                _sceneToggle.Add(i, false);
            }

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.Toggle(_sceneToggle[i]);
            EditorGUILayout.LabelField(i);
            EditorGUILayout.EndHorizontal();
        }
        EditorGUILayout.EndScrollView();

        if (GUILayout.Button("BAKE LIGHTS !") && !_baking)
        {
            _baking = true;
            BakeLights(list);
        }

        if (_baking)
        {
            EditorGUILayout.LabelField("Scenes Already Baked and Baking:");
            foreach (var item in _scenesBuilt)
            {
                var splitted = item.Split('/');
                EditorGUILayout.LabelField(splitted[splitted.Length - 1]);
            }
            if (GUILayout.Button("FORCE STOP BAKING !"))
            {
                Lightmapping.ForceStop();
                _baking      = false;
                _sceneToggle = new Dictionary <string, bool>();
            }
        }
    }
コード例 #3
0
        public static void StopBake()
        {
            if (!Lightmapping.isRunning)
            {
                return;
            }

            Lightmapping.Cancel();
            if (Lightmapping.isRunning)
            {
                Lightmapping.ForceStop();
            }
        }
コード例 #4
0
        void OnGUI()
        {
            SetupHorizontalBoxStyle();
            SetupStatusBoxStyle();
            SetupBoxStyle();


            // Row
            GUILayout.BeginHorizontal("", m_HorizontalStyle);
            //GUILayout.Height(175);
            if (GUI.Button(new Rect(10, 10, 25, 25), ButtonIconBrushMode, GUIStyle.none))
            {
                ToggleBrushMode();
                UpdateBrushMode();
            }

            if (GUI.Button(new Rect(40, 10, 25, 25), ButtonIconNormal, GUIStyle.none))
            {
                UseNormalDirection = !UseNormalDirection;
                UpdateBrushNormal();
            }

            if (GUI.Button(new Rect(70, 10, 25, 25), ButtonIconStroke, GUIStyle.none))
            {
                ToggleStrokeMode();
                UpdateBrushStroke();
            }

            if (GUI.Button(new Rect(100, 10, 25, 25), ButtonIconRandomizePosition, GUIStyle.none))
            {
                RandomizePosition = !RandomizePosition;
                UpdateBrushRandomizePosition();
            }

            if (GUI.Button(new Rect(130, 10, 25, 25), ButtonIconRandomizeRotation, GUIStyle.none))
            {
                RandomizeRotation = !RandomizeRotation;
                UpdateBrushRandomizeRotation();
            }

            if (GUI.Button(new Rect(160, 10, 25, 25), ButtonIconRandomizeScale, GUIStyle.none))
            {
                RandomizeScale = !RandomizeScale;
                UpdateBrushRandomizeScale();
            }

            if (GUI.Button(new Rect(190, 10, 25, 25), ButtonIconGrid, GUIStyle.none))
            {
                CUtility.ShowGrid = !CUtility.ShowGrid;
                UpdateGrid();
            }
            if (GUI.Button(new Rect(220, 10, 25, 25), ButtonIconShadow, GUIStyle.none))
            {
                ToggleShadows = !ToggleShadows;
                UpdateShadow();
            }
            if (GUI.Button(new Rect(245, 10, 25, 25), ButtonIconLight, GUIStyle.none))
            {
                ToggleLighting = !ToggleLighting;


                UpdateLighting();
            }

            /*
             * if (GUI.Button(new Rect(270, 10, 25, 25), ButtonIconLightBake, GUIStyle.none))
             * {
             *  Lightmapping.Bake();
             *  //ToggleLighting = !ToggleLighting;
             *  //UpdateLighting();
             * }
             * if (GUI.Button(new Rect(300, 10, 25, 25), ButtonIconLightClear, GUIStyle.none))
             * {
             *  Lightmapping.Clear();
             *  //ToggleLighting = !ToggleLighting;
             *  //UpdateLighting();
             * }*/


            GUILayout.Space(125);
            GUILayout.Space(125);
            GUILayout.Space(125);
            GUILayout.Space(125);
            if (GUILayout.Button("BakeLight"))
            {
                Lightmapping.Bake();
            }
            if (GUILayout.Button("Stop"))
            {
                Lightmapping.ForceStop();
            }
            if (GUILayout.Button("Clear"))
            {
                Lightmapping.Clear();
            }
            if (GUILayout.Button("BakeOcclusion"))
            {
                StaticOcclusionCulling.Compute();
            }
            if (GUILayout.Button("BakeAstar"))
            {
                //StaticOcclusionCulling.Compute();
            }

            /*
             * if (GUILayout.Button("SNewScene"))
             * {
             *  cSceneManagement.NewScene();
             * }
             *
             * if (GUILayout.Button("SReloadWorkingScene"))
             * {
             *  cSceneManagement.ReloadWorkingScene();
             * }
             *
             *
             *
             * GUILayout.Label("MultiObject:", GUILayout.MaxWidth(50));
             * GameObject = (GameObject) EditorGUILayout.ObjectField("", GameObject, typeof(GameObject), true,
             *  GUILayout.MaxWidth(90));
             * if (GUILayout.Button("Add(N)"))//not yet working
             * {
             *  cBrushThumbnailer.CreateThumbnail(GameObject);
             *  //cThumbnailer.CreateThumbnail()
             *  //AssetDatabase.Refresh();
             *  //SaveSettings();
             * }
             *
             * if (GUILayout.Button("LoadSettings(N)")) //not yet working
             * {
             *  LoadSettings();
             * }
             */
            GUILayout.EndHorizontal();

            //
            //

            /******************************************************************************************
             *  New RowNew RowNew RowNew RowNew RowNew RowNew RowNew RowNew RowNew RowNew RowNew RowNew RowNew RowNew RowNew Row
             *******************************************************************************************/
            // Row
            GUILayout.BeginHorizontal("", GUIStyle.none);
            GameObject = (GameObject)EditorGUILayout.ObjectField("", GameObject, typeof(GameObject), true,
                                                                 GUILayout.MaxWidth(90));
            GUILayout.Label("Radius:", GUILayout.MaxWidth(50));
            Radius = EditorGUILayout.Slider("", Radius, 1f, 50f, GUILayout.MaxWidth(120));
            GUILayout.Label("Intensity:", GUILayout.MaxWidth(55));
            PaintIntensity = EditorGUILayout.IntSlider("", PaintIntensity, 1, 100, GUILayout.MaxWidth(120));
            GUILayout.Label("Focal Shift:", GUILayout.MaxWidth(70));
            FocalShift            = EditorGUILayout.Slider("", FocalShift, -1, 1, GUILayout.MaxWidth(120));
            CumulativeProbability = EditorGUILayout.CurveField("", CumulativeProbability, GUILayout.MaxWidth(40));

            GUILayout.Label("Paint surface:", GUILayout.MaxWidth(80));
            m_PaintSurface = (PaintSurfaceType)EditorGUILayout.EnumPopup("", m_PaintSurface, GUILayout.MaxWidth(55));
            GUILayout.Label("Record session", GUILayout.MaxWidth(90));
            RecordSession = EditorGUILayout.Toggle("", RecordSession, GUILayout.MaxWidth(40));

            GUILayout.EndHorizontal();

            /// Row
            GUILayout.BeginHorizontal("", GUIStyle.none);
            GUILayout.Label("Size:", GUILayout.MaxWidth(40));
            MinSize = EditorGUILayout.FloatField("", MinSize, GUILayout.MaxWidth(35));
            EditorGUILayout.MinMaxSlider(ref MinSize, ref MaxSize, MinLimit, MaxLimit, GUILayout.MaxWidth(60));
            MaxSize = EditorGUILayout.FloatField("", MaxSize, GUILayout.MaxWidth(35));

            GUILayout.Space(20);
            GUILayout.Space(20);
            GUILayout.Label("rX:", GUILayout.MaxWidth(20));
            MaxRotationX = EditorGUILayout.FloatField("", MaxRotationX, GUILayout.MaxWidth(30));
            GUILayout.Label("rY:", GUILayout.MaxWidth(20));
            MaxRotationY = EditorGUILayout.FloatField("", MaxRotationY, GUILayout.MaxWidth(30));
            GUILayout.Label("rZ:", GUILayout.MaxWidth(20));
            MaxRotationZ = EditorGUILayout.FloatField("", MaxRotationZ, GUILayout.MaxWidth(30));
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal("", m_StatusBarStyle);
            GUILayout.Label("Status:");
            GUILayout.Label(MyStatus);
            GUILayout.EndHorizontal();
        }
コード例 #5
0
 public static void StopBakeLighting()
 {
     Lightmapping.ForceStop();
 }
コード例 #6
0
    private void BakingHelper()
    {
#if UNITY_EDITOR
        Shader.SetGlobalFloat("_NoLightmap", LightmapSettings.lightmaps.Length == 0 ? 1 : 0);

        if (!Application.isPlaying)
        {
            if (RenderSettings.ambientMode == UnityEngine.Rendering.AmbientMode.Trilight)
            {
                if (Lightmapping.isRunning && !Switch)
                {
                    Switch           = true;
                    EquatorColorMemo = RenderSettings.ambientEquatorColor;
                    SkyColorMemo     = RenderSettings.ambientSkyColor;
                    GroundColorMemo  = RenderSettings.ambientGroundColor;

                    mrs       = FindObjectsOfType <MeshRenderer>();
                    mrShadows = new ShadowCastingMode[mrs.Length];

                    for (int i = 0; i < mrs.Length; i++)
                    {
                        if (mrs[i] != null)
                        {
                            mrShadows[i] = mrs[i].shadowCastingMode;
                            if (mrs[i].shadowCastingMode == ShadowCastingMode.Off)
                            {
                                mrs[i].shadowCastingMode = ShadowCastingMode.On;
                            }
                        }
                        else
                        {
                            mrShadows[i] = ShadowCastingMode.Off;
                        }
                    }

                    if (TestSun())
                    {
                        SunColorMemo                 = RenderSettings.sun.color;
                        SunIntensityMemo             = RenderSettings.sun.intensity;
                        RenderSettings.sun.color     = Color.white;
                        RenderSettings.sun.intensity = 1;
                        if (InDoor)
                        {
                            RenderSettings.sun.intensity = 0;
                            RenderSettings.sun.shadows   = LightShadows.None;
                        }
                        //RenderSettings.sun.bounceIntensity = 1;
                    }
                    if (InDoor)
                    {
                        ChangeShadowCastingMode(UnityEngine.Rendering.ShadowCastingMode.On);
                        Shader.SetGlobalFloat("_SunOutDoor", 1);
                    }

                    RenderSettings.ambientEquatorColor = Color.black;
                    RenderSettings.ambientSkyColor     = Color.black;
                    RenderSettings.ambientGroundColor  = Color.black;
                }
                else if (!Lightmapping.isRunning && Switch)
                {
                    Switch = false;
                    EquatorColorForMixer = RenderSettings.ambientEquatorColor = EquatorColorMemo;
                    SkyColorForMixer     = RenderSettings.ambientSkyColor = SkyColorMemo;
                    GroundColorForMixer  = RenderSettings.ambientGroundColor = GroundColorMemo;

                    for (int i = 0; i < mrs.Length; i++)
                    {
                        if (mrs[i] != null)
                        {
                            mrs[i].shadowCastingMode = mrShadows[i];
                        }
                    }

                    if (TestSun())
                    {
                        SunColorForMixer           = RenderSettings.sun.color = SunColorMemo;
                        SunIntensityForMixer       = RenderSettings.sun.intensity = SunIntensityMemo;
                        RenderSettings.sun.shadows = LightShadows.Soft;
                    }
                    if (InDoor)
                    {
                        ChangeShadowCastingMode(UnityEngine.Rendering.ShadowCastingMode.Off);
                        Shader.SetGlobalFloat("_SunOutDoor", 0);
                    }
                }
            }
            else if (Lightmapping.isRunning)
            {
                Debug.LogError("错误的环境光模式,请设置为Gradient");
                Lightmapping.ForceStop();
            }
        }
#endif
    }