void Buttons()
{
InitLightmapSettings();
m_LightmapSettings.Update();
using (new EditorGUI.DisabledScope(EditorApplication.isPlayingOrWillChangePlaymode))
{
if (Lightmapping.lightingDataAsset && !Lightmapping.lightingDataAsset.isValid)
{
EditorGUILayout.HelpBox(Lightmapping.lightingDataAsset.validityErrorMessage, MessageType.Warning);
}
EditorGUILayout.Space();
GUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
Rect rect = GUILayoutUtility.GetRect(Styles.ContinuousBakeLabel, GUIStyle.none);
EditorGUI.BeginProperty(rect, Styles.ContinuousBakeLabel, m_WorkflowMode);
bool iterative = m_WorkflowMode.intValue == (int)Lightmapping.GIWorkflowMode.Iterative;
// Continous mode checkbox
EditorGUI.BeginChangeCheck();
iterative = GUILayout.Toggle(iterative, Styles.ContinuousBakeLabel);
if (EditorGUI.EndChangeCheck())
{
m_WorkflowMode.intValue = (int)(iterative ? Lightmapping.GIWorkflowMode.Iterative : Lightmapping.GIWorkflowMode.OnDemand);
}
EditorGUI.EndProperty();
using (new EditorGUI.DisabledScope(iterative))
{
// Bake button if we are not currently baking
bool showBakeButton = iterative || !Lightmapping.isRunning;
if (showBakeButton)
{
if (EditorGUI.ButtonWithDropdownList(Styles.BuildLabel, Styles.BakeModeStrings, BakeDropDownCallback, GUILayout.Width(170)))
{
DoBake();
// DoBake could've spawned a save scene dialog. This breaks GUI on mac (Case 490388).
// We work around this with an ExitGUI here.
GUIUtility.ExitGUI();
}
}
// Cancel button if we are currently baking
else
{
// Only show Force Stop when using the PathTracer backend
if (LightmapEditorSettings.lightmapper == LightmapEditorSettings.Lightmapper.ProgressiveCPU &&
m_EnabledBakedGI.boolValue &&
GUILayout.Button("Force Stop", GUILayout.Width(Styles.ButtonWidth)))
{
Lightmapping.ForceStop();
}
if (GUILayout.Button("Cancel", GUILayout.Width(Styles.ButtonWidth)))
{
Lightmapping.Cancel();
}
}
}
GUILayout.EndHorizontal();
EditorGUILayout.Space();
}
m_LightmapSettings.ApplyModifiedProperties();
}