void DrawVisibilityForMap(BlockMap map){ Color c = GUI.color; bool viewAll = mapViewAll[map.name]; if(viewAll){ GUI.color = Color.green; } EditorGUILayout.BeginHorizontal(); if(GUILayout.Button("View All Layers")){ if(!viewAll){ map.ShowAllLayers(); mapViewAll[map.name] = true; } } GUI.color = c; if(!mapUnlockAll.ContainsKey(map.name)){ mapUnlockAll.Add(map.name,true); } mapUnlockAll[map.name] = EditorGUILayout.Toggle(mapUnlockAll[map.name]); if(mapUnlockAll[map.name]){ mapLayerLock.Clear(); } EditorGUILayout.EndHorizontal(); if(!mapLayerVisibility.ContainsKey(map.name)){ mapLayerVisibility.Add(map.name,0); } int viewedLayer = mapLayerVisibility[map.name]; for(int i = map.mapLowerDepth; i <= map.mapUpperDepth; i++){ if(!viewAll && viewedLayer == i){ GUI.color = Color.green; } EditorGUILayout.BeginHorizontal(); if(GUILayout.Button("Layer " + i)){ if(viewedLayer != i || viewAll){ map.ShowLayer(i); mapLayerVisibility[map.name] = i; mapViewAll[map.name] = false; } } GUI.color = c; if(!mapLayerLock.ContainsKey(map.name + "_" + i)){ mapLayerLock.Add(map.name + "_" + i,false); } mapLayerLock[map.name + "_" + i] = EditorGUILayout.Toggle(mapLayerLock[map.name + "_" + i]); if(mapLayerLock[map.name + "_" + i]){ mapUnlockAll[map.name] = false; } EditorGUILayout.EndHorizontal(); } }