1.8.0: Added target frame rate and PlayerPrefs.Delete to toolbar
- Added: Tooltips on all buttons and labels in toolbar tools - Added: Target frame rate with `[min;max]` slider in toolbar - Added: `PlayerPrefs` delete button added to toolbar - Added: Option to select Single/Additive scene load/unload to scene picker - Added: All `IToolbarSettings` will be grouped with a foldout-toggle in Preferences
This commit is contained in:
parent
10d07b986f
commit
fe82c5c9fa
249
CHANGELOG.md
Normal file
249
CHANGELOG.md
Normal file
|
|
@ -0,0 +1,249 @@
|
||||||
|
# Change Log
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## [1.8.0] - 2022-12-07
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- CHANGELOG.md
|
||||||
|
- Tooltips on all buttons and labels in toolbar tools
|
||||||
|
- Target frame rate with `[min;max]` slider in toolbar
|
||||||
|
- `PlayerPrefs` delete button added to toolbar
|
||||||
|
- Option to select Single/Additive scene load/unload to scene picker
|
||||||
|
- All `IToolbarSettings` will be grouped with a foldout-toggle in Preferences
|
||||||
|
|
||||||
|
|
||||||
|
## [1.7.2] - 2022-09-20
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where changing scene by opening scene files would not refresh scene selection tool
|
||||||
|
|
||||||
|
|
||||||
|
## [1.7.1] - 2022-08-08
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed compiler issue, due to `string.Join` with `char` not being available in Unity 2020
|
||||||
|
|
||||||
|
|
||||||
|
## [1.7.0] - 2022-06-26
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Option to sort scenes by asset labels in scene picker in toolbar
|
||||||
|
|
||||||
|
|
||||||
|
## [1.6.0] - 2022-06-25
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Position and rotation pivots for scene view toolbar menu which uses buttons, instead of toggle drop down menu
|
||||||
|
|
||||||
|
|
||||||
|
## [1.5.2] - 2022-02-15
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where toolbar styles modified a style directly in a Unity GUISkin thereby given incorrect buttons in other windows
|
||||||
|
|
||||||
|
|
||||||
|
## [1.5.1] - 2022-02-14
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Added toolbar settings interface to readme file
|
||||||
|
|
||||||
|
|
||||||
|
## [1.5.0] - 2022-02-14
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Added interface and utility class for adding settings to toolbar settings provider
|
||||||
|
|
||||||
|
|
||||||
|
## [1.4.1] - 2022-02-13
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where new build tools used unsupported styles in Unity 2019 and 2020
|
||||||
|
|
||||||
|
|
||||||
|
## [1.4.0] - 2022-02-13
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Build target picker and build button to toolbar
|
||||||
|
|
||||||
|
|
||||||
|
## [1.3.3] - 2022-01-28
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Setting time scale close to 1.0 in snap it to 1.0
|
||||||
|
|
||||||
|
|
||||||
|
## [1.3.2] - 2022-01-28
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Added min & max values for time slider
|
||||||
|
- Options for max time scale value in preferences
|
||||||
|
|
||||||
|
## [1.3.1] - 2022-01-21
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Removing all package scenes from ScenePicker, due to read-only scenes not being loadable
|
||||||
|
|
||||||
|
|
||||||
|
## [1.3.0] - 2022-01-20
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- `EditorProjectPrefs`, so each project can have their own settings for history and favorites
|
||||||
|
|
||||||
|
|
||||||
|
## [1.2.0] - 2022-01-15
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Time scale to toolbar
|
||||||
|
|
||||||
|
|
||||||
|
## [1.1.0] - 2021-12-19
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- README file with instructions about usage of the different tools
|
||||||
|
- ToolbarSettings, so visibility of tools can be set in Preferences/Module/Toolbar
|
||||||
|
- Priority for determining which order tools should be added on left and right side of play buttons
|
||||||
|
|
||||||
|
|
||||||
|
## [1.0.2] - 2021-12-17
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where PrefabStage no longer was marked as experimental in Unity 2021
|
||||||
|
|
||||||
|
|
||||||
|
## [1.0.1] - 2021-11-19
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Removed noisy debug log in toolbar, left in by mistake in [1.0.0]
|
||||||
|
|
||||||
|
|
||||||
|
## [1.0.0] - 2021-11-10
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where toolbar elements could overlap with other toolbar elements in Unity 2020 and older
|
||||||
|
|
||||||
|
|
||||||
|
## [0.8.3] - 2021-10-16
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where creating a new scene didn't set scene picker as dirty
|
||||||
|
|
||||||
|
|
||||||
|
## [0.8.2] - 2021-09-28
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Removed scene listing from addressables, since it is too expensive (~220 times worse, then just running through entire `AssetDatabase` for scenes)
|
||||||
|
|
||||||
|
|
||||||
|
## [0.8.1] - 2021-09-26
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where scenes in `EditorBuildSettings` and addressabels would appear multiple times, due to scenes in `EditorBuildSettings` automatically being added to addressables
|
||||||
|
|
||||||
|
|
||||||
|
## [0.8.0] - 2021-09-18
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where a compiler error could result in a cascade of reflection exceptions from the toolbar
|
||||||
|
|
||||||
|
|
||||||
|
## [0.7.2] - 2021-09-17
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Added asset bundle and addressable scenes to scene picker
|
||||||
|
|
||||||
|
|
||||||
|
## [0.7.1] - 2021-09-13
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Changed assembly definition name from `Game.NavigationTool.Editor` to `Module.NavigationTool.Editor`
|
||||||
|
|
||||||
|
|
||||||
|
## [0.7.0] - 2021-09-12
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Changed namespace from `Game.*` to `Module.*`
|
||||||
|
|
||||||
|
|
||||||
|
## [0.6.6] - 2021-09-04
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where scene picker wouldn't update correctly, when in play mode and changing active scene
|
||||||
|
- Fixed issue, where it wasn't possible to select canvas in prefab stage
|
||||||
|
|
||||||
|
|
||||||
|
## [0.6.5] - 2021-08-02
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where canvas picker wouldn't update selection when changing scenes
|
||||||
|
|
||||||
|
## [0.6.4] - 2021-06-29
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Added log warning, if trying to focus on a canvas `NULL` object
|
||||||
|
|
||||||
|
|
||||||
|
## [0.6.3] - 2021-06-21
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Replaced `IToolbarDrawer` with `AbstractToolbarDrawer` with rect and styles setup-handling
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where toolbar items didn't accept mouse input in 2021 or newer versions
|
||||||
|
|
||||||
|
|
||||||
|
## [0.6.2] - 2021-04-27
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Added all scenes to Scene picker tool, where scenes from `EditorBuildSettings` will be marked with "(Build Settings)"-postfix
|
||||||
|
|
||||||
|
|
||||||
|
## [0.6.1] - 2021-04-12
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed issue, where UI Canvas picker wasn't available in playmode
|
||||||
|
- Fixed issue, where UI Layer toggle wasn't available in playmode
|
||||||
|
|
||||||
|
|
||||||
|
## [0.6.0] - 2021-04-12
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- UI Canvas picker to toolbar for easy selecting and centering a canvas in scene view
|
||||||
|
- UI Layer toggle to toolbar, so it can be turned on/off in scene view
|
||||||
|
|
||||||
|
|
||||||
|
## [0.5.0] - 2021-03-11
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Toolbar drawers for adding buttons next to play buttons
|
||||||
|
- Scene picker tool to toolbar for easy selecting between scenes in `EditorBuildSettings`
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Keywords in manifest file to include toolbar
|
||||||
|
|
||||||
|
|
||||||
|
## [0.4.0] - 2021-02-14
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Double-clicking item in history window will now open asset in preferred tool
|
||||||
|
|
||||||
|
|
||||||
|
## [0.3.0] - 2021-02-14
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- History window with a list of all prior selected objects
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Keywords in manifest file to include favorites and history
|
||||||
|
|
||||||
|
|
||||||
|
## [0.2.0] - 2021-02-14
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Added drag and drop between entries in favorites tree view
|
||||||
|
|
||||||
|
|
||||||
|
## [0.0.1] - 2021-02-14
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Favorites window with tree view, search and tools for adding, renaming, deleting items
|
||||||
7
CHANGELOG.md.meta
Normal file
7
CHANGELOG.md.meta
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0c335fee33a70e64d980987fb90ddf68
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
@ -8,6 +9,8 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
{
|
{
|
||||||
private static Styles STYLES;
|
private static Styles STYLES;
|
||||||
private static IToolbarSettings[] SETTINGS;
|
private static IToolbarSettings[] SETTINGS;
|
||||||
|
|
||||||
|
private const string PREF_FOLDOUT_STATE = "ToolbarFoldout_{0}";
|
||||||
|
|
||||||
[SettingsProvider]
|
[SettingsProvider]
|
||||||
public static SettingsProvider GetProvider()
|
public static SettingsProvider GetProvider()
|
||||||
|
|
@ -46,13 +49,44 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
for (var i = 0; i < SETTINGS.Length; i++)
|
for (var i = 0; i < SETTINGS.Length; i++)
|
||||||
{
|
{
|
||||||
IToolbarSettings settings = SETTINGS[i];
|
IToolbarSettings settings = SETTINGS[i];
|
||||||
|
|
||||||
EditorGUILayout.LabelField(settings.Title, EditorStyles.boldLabel);
|
try
|
||||||
settings.Draw();
|
{
|
||||||
EditorGUILayout.Space();
|
bool foldoutState = GetFoldoutState(settings);
|
||||||
|
bool newFoldoutState = EditorGUILayout.BeginFoldoutHeaderGroup(foldoutState, settings.Title, EditorStyles.foldoutHeader);
|
||||||
|
|
||||||
|
if (newFoldoutState)
|
||||||
|
{
|
||||||
|
EditorGUI.indentLevel++;
|
||||||
|
settings.Draw();
|
||||||
|
EditorGUI.indentLevel--;
|
||||||
|
}
|
||||||
|
|
||||||
|
EditorGUILayout.EndFoldoutHeaderGroup();
|
||||||
|
EditorGUILayout.Space();
|
||||||
|
|
||||||
|
if (newFoldoutState != foldoutState)
|
||||||
|
SetFoldoutState(settings, newFoldoutState);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
EditorGUILayout.LabelField(e.Message);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EditorGUILayout.EndVertical();
|
EditorGUILayout.EndVertical();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool GetFoldoutState(IToolbarSettings settings)
|
||||||
|
{
|
||||||
|
string key = string.Format(PREF_FOLDOUT_STATE, settings.GetType().FullName);
|
||||||
|
return EditorPrefs.GetBool(key, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetFoldoutState(IToolbarSettings settings, bool foldout)
|
||||||
|
{
|
||||||
|
string key = string.Format(PREF_FOLDOUT_STATE, settings.GetType().FullName);
|
||||||
|
EditorPrefs.SetBool(key, foldout);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
|
|
||||||
public void Draw()
|
public void Draw()
|
||||||
{
|
{
|
||||||
IsBuildEnabled = EditorGUILayout.Toggle("Enable Build Target picker", IsBuildEnabled);
|
IsBuildEnabled = EditorGUILayout.Toggle("Enable Build Target", IsBuildEnabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
26
Editor/Toolbar/Tools/Settings/ToolbarPlayerPrefsSettings.cs
Normal file
26
Editor/Toolbar/Tools/Settings/ToolbarPlayerPrefsSettings.cs
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
using UnityEditor;
|
||||||
|
|
||||||
|
namespace Module.NavigationTool.Editor.Toolbar
|
||||||
|
{
|
||||||
|
internal sealed class ToolbarPlayerPrefsSettings : IToolbarSettings
|
||||||
|
{
|
||||||
|
public string Title => "Player Prefs";
|
||||||
|
|
||||||
|
private const string PREF_PLAYER_PREFS_ENABLED = "ToolbarSettings.IsPlayerPrefsEnabled";
|
||||||
|
|
||||||
|
public static bool IsPlayerPrefsEnabled
|
||||||
|
{
|
||||||
|
get => EditorPrefs.GetBool(PREF_PLAYER_PREFS_ENABLED, false);
|
||||||
|
set => EditorPrefs.SetBool(PREF_PLAYER_PREFS_ENABLED, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialize()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Draw()
|
||||||
|
{
|
||||||
|
IsPlayerPrefsEnabled = EditorGUILayout.Toggle("Enable Player Prefs", IsPlayerPrefsEnabled);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ed84516c9799495c829d09ad6076124d
|
||||||
|
timeCreated: 1670362850
|
||||||
|
|
@ -13,6 +13,7 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
|
|
||||||
private const string PREF_IS_SCENE_ENABLED = "ToolbarSettings_IsSceneEnabled";
|
private const string PREF_IS_SCENE_ENABLED = "ToolbarSettings_IsSceneEnabled";
|
||||||
private const string PREF_SCENE_ASSET_LABELS = "ToolbarSettings_SceneAssetLabels";
|
private const string PREF_SCENE_ASSET_LABELS = "ToolbarSettings_SceneAssetLabels";
|
||||||
|
private const string PREF_SCENE_PICKER_LOAD_SET_AS_ADDITIVE_KEY = "ToolbarSettings_ScenePickerLoadSetAsAdditive";
|
||||||
|
|
||||||
public static bool IsSceneEnabled
|
public static bool IsSceneEnabled
|
||||||
{
|
{
|
||||||
|
|
@ -25,6 +26,12 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
get => EditorPrefs.GetString(PREF_SCENE_ASSET_LABELS).Split(',').ToList();
|
get => EditorPrefs.GetString(PREF_SCENE_ASSET_LABELS).Split(',').ToList();
|
||||||
private set => EditorPrefs.SetString(PREF_SCENE_ASSET_LABELS, string.Join(",", value));
|
private set => EditorPrefs.SetString(PREF_SCENE_ASSET_LABELS, string.Join(",", value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool IsScenePickerSetAsAdditive
|
||||||
|
{
|
||||||
|
get => EditorPrefs.GetBool(PREF_SCENE_PICKER_LOAD_SET_AS_ADDITIVE_KEY, false);
|
||||||
|
set => EditorPrefs.SetBool(PREF_SCENE_PICKER_LOAD_SET_AS_ADDITIVE_KEY, value);
|
||||||
|
}
|
||||||
|
|
||||||
private ReorderableList assetLabelList;
|
private ReorderableList assetLabelList;
|
||||||
private List<string> assetLabels;
|
private List<string> assetLabels;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Module.NavigationTool.Editor.Toolbar
|
||||||
|
{
|
||||||
|
internal sealed class ToolbarTargetFrameRateSettings : IToolbarSettings
|
||||||
|
{
|
||||||
|
public string Title => "Target Frame Rate";
|
||||||
|
|
||||||
|
private const string PREF_IS_TARGET_FRAME_RATE_ENABLED = "ToolbarSettings.IsTargetFrameRateEnabled";
|
||||||
|
private const string PREF_TARGET_FRAME_RATE_MIN = "ToolbarSettings.TargetFrameRateMin";
|
||||||
|
private const string PREF_TARGET_FRAME_RATE_MAX = "ToolbarSettings.TargetFrameRateMax";
|
||||||
|
|
||||||
|
public static bool IsTargetFrameRateEnabled
|
||||||
|
{
|
||||||
|
get => EditorPrefs.GetBool(PREF_IS_TARGET_FRAME_RATE_ENABLED, false);
|
||||||
|
set => EditorPrefs.SetBool(PREF_IS_TARGET_FRAME_RATE_ENABLED, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int TargetFrameRateMinValue
|
||||||
|
{
|
||||||
|
get => EditorPrefs.GetInt(PREF_TARGET_FRAME_RATE_MIN, 10);
|
||||||
|
set => EditorPrefs.SetInt(PREF_TARGET_FRAME_RATE_MIN, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int TargetFrameRateMaxValue
|
||||||
|
{
|
||||||
|
get => EditorPrefs.GetInt(PREF_TARGET_FRAME_RATE_MAX, 144);
|
||||||
|
set => EditorPrefs.SetInt(PREF_TARGET_FRAME_RATE_MAX, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialize()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Draw()
|
||||||
|
{
|
||||||
|
IsTargetFrameRateEnabled = EditorGUILayout.Toggle("Enable Frame Rate", IsTargetFrameRateEnabled);
|
||||||
|
|
||||||
|
GUI.enabled = IsTargetFrameRateEnabled;
|
||||||
|
int minValue = EditorGUILayout.IntField("Min", TargetFrameRateMinValue);
|
||||||
|
int maxValue = EditorGUILayout.IntField("Max", TargetFrameRateMaxValue);
|
||||||
|
|
||||||
|
if (minValue != TargetFrameRateMinValue)
|
||||||
|
{
|
||||||
|
if (minValue < 1)
|
||||||
|
minValue = 1;
|
||||||
|
|
||||||
|
if (minValue > maxValue)
|
||||||
|
maxValue = minValue;
|
||||||
|
}
|
||||||
|
else if (maxValue != TargetFrameRateMaxValue)
|
||||||
|
{
|
||||||
|
if (maxValue < 1)
|
||||||
|
maxValue = 1;
|
||||||
|
|
||||||
|
if (maxValue < minValue)
|
||||||
|
minValue = maxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
TargetFrameRateMinValue = minValue;
|
||||||
|
TargetFrameRateMaxValue = maxValue;
|
||||||
|
GUI.enabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3f20d59ea6be4e4ab06ab8960c16fcd2
|
||||||
|
timeCreated: 1670355420
|
||||||
|
|
@ -35,7 +35,7 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
|
|
||||||
public void Draw()
|
public void Draw()
|
||||||
{
|
{
|
||||||
IsTimeScaleEnabled = EditorGUILayout.Toggle("Enable Time Scale slider", IsTimeScaleEnabled);
|
IsTimeScaleEnabled = EditorGUILayout.Toggle("Enable Time slider", IsTimeScaleEnabled);
|
||||||
|
|
||||||
GUI.enabled = IsTimeScaleEnabled;
|
GUI.enabled = IsTimeScaleEnabled;
|
||||||
float timeScaleMinValue = EditorGUILayout.FloatField("Min Value", TimeScaleMinValue);
|
float timeScaleMinValue = EditorGUILayout.FloatField("Min Value", TimeScaleMinValue);
|
||||||
|
|
|
||||||
|
|
@ -23,10 +23,14 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
if (!IS_DIRTY)
|
if (!IS_DIRTY)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
const string TOOLTIP = "Build project with current EditorBuildSettings and target platform";
|
||||||
|
const string TOOLTIP_RUN = "Build & Run project with current EditorBuildSettings and target platform";
|
||||||
|
const string TOOLTIP_PLATFORM = "Select build or build & run options";
|
||||||
|
|
||||||
BUTTON_LIST = new[]
|
BUTTON_LIST = new[]
|
||||||
{
|
{
|
||||||
new GUIContent("Build"),
|
new GUIContent("Build", TOOLTIP),
|
||||||
new GUIContent("Build & Run")
|
new GUIContent("Build & Run", TOOLTIP_RUN)
|
||||||
};
|
};
|
||||||
|
|
||||||
CONTENT_LIST = new[]
|
CONTENT_LIST = new[]
|
||||||
|
|
@ -35,7 +39,8 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
new GUIContent("Build and Run")
|
new GUIContent("Build and Run")
|
||||||
};
|
};
|
||||||
|
|
||||||
DROPDOWN = EditorGUIUtility.IconContent("d_icon dropdown");
|
GUIContent iconContent = EditorGUIUtility.IconContent("d_icon dropdown");
|
||||||
|
DROPDOWN = new GUIContent(iconContent.image, TOOLTIP_PLATFORM);
|
||||||
|
|
||||||
IS_DIRTY = false;
|
IS_DIRTY = false;
|
||||||
}
|
}
|
||||||
|
|
@ -59,7 +64,7 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
BuildPlayerWindow.DefaultBuildMethods.BuildPlayer(options);
|
BuildPlayerWindow.DefaultBuildMethods.BuildPlayer(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GUI.Button(rect1, DROPDOWN, styles.button))
|
if (GUI.Button(rect1, DROPDOWN, styles.buttonNoPadding))
|
||||||
{
|
{
|
||||||
// Note: Do not discard the parameters: userData and options, since they throw an error in 2019, if there are two of them
|
// Note: Do not discard the parameters: userData and options, since they throw an error in 2019, if there are two of them
|
||||||
EditorUtility.DisplayCustomMenu(rect, CONTENT_LIST, currentSelected, (userData, options, selected) =>
|
EditorUtility.DisplayCustomMenu(rect, CONTENT_LIST, currentSelected, (userData, options, selected) =>
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
private static BuildTarget[] TARGETS = new BuildTarget[0];
|
private static BuildTarget[] TARGETS = new BuildTarget[0];
|
||||||
private static GUIContent[] TARGET_LIST = new GUIContent[0];
|
private static GUIContent[] TARGET_LIST = new GUIContent[0];
|
||||||
private static int SELECTED_INDEX = -1;
|
private static int SELECTED_INDEX = -1;
|
||||||
|
|
||||||
private static void Initialize()
|
private static void Initialize()
|
||||||
{
|
{
|
||||||
if (!IS_DIRTY)
|
if (!IS_DIRTY)
|
||||||
|
|
@ -128,12 +128,16 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
|
|
||||||
private static GUIContent GetButtonContent(BuildTargetGroup group)
|
private static GUIContent GetButtonContent(BuildTargetGroup group)
|
||||||
{
|
{
|
||||||
|
const string TOOLTIP = "Select target platform for build";
|
||||||
|
|
||||||
var name = $"BuildSettings.{group}.Small";
|
var name = $"BuildSettings.{group}.Small";
|
||||||
|
|
||||||
if (group == BuildTargetGroup.WSA)
|
if (group == BuildTargetGroup.WSA)
|
||||||
name = "BuildSettings.Metro.Small";
|
name = "BuildSettings.Metro.Small";
|
||||||
|
|
||||||
return EditorGUIUtility.IconContent(name);
|
GUIContent iconContent = EditorGUIUtility.IconContent(name);
|
||||||
|
var content = new GUIContent(iconContent.image, TOOLTIP);
|
||||||
|
return content;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int GetHashCode(BuildTargetGroup group, BuildTarget target)
|
private static int GetHashCode(BuildTargetGroup group, BuildTarget target)
|
||||||
|
|
|
||||||
37
Editor/Toolbar/Tools/ToolPlayerPrefs.cs
Normal file
37
Editor/Toolbar/Tools/ToolPlayerPrefs.cs
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
using JetBrains.Annotations;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
using UTools = UnityEditor.Tools;
|
||||||
|
|
||||||
|
namespace Module.NavigationTool.Editor.Toolbar
|
||||||
|
{
|
||||||
|
[UsedImplicitly]
|
||||||
|
internal sealed class ToolPlayerPrefs : AbstractToolbarDrawer
|
||||||
|
{
|
||||||
|
public override bool Visible => ToolbarPlayerPrefsSettings.IsPlayerPrefsEnabled;
|
||||||
|
public override bool Enabled => true;
|
||||||
|
public override EToolbarPlacement Placement => EToolbarPlacement.Right;
|
||||||
|
public override int Priority => (int)EToolbarPriority.Low;
|
||||||
|
|
||||||
|
private static readonly GUIContent LABEL_DELETE = new GUIContent(string.Empty, "Deletes all PlayerPrefs entries");
|
||||||
|
|
||||||
|
protected override void Draw(Rect rect)
|
||||||
|
{
|
||||||
|
bool isDeleteButtonPressed = GUI.Button(rect, styles.iconDisconnect, styles.button);
|
||||||
|
GUI.Label(rect, LABEL_DELETE, styles.labelCenter);
|
||||||
|
|
||||||
|
if (!isDeleteButtonPressed)
|
||||||
|
return;
|
||||||
|
if (!EditorUtility.DisplayDialog("Delete PlayerPrefs", "Are you sure you want to delete all PlayerPrefs data?", "Yes", "No"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
PlayerPrefs.DeleteAll();
|
||||||
|
PlayerPrefs.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override float CalculateWidth()
|
||||||
|
{
|
||||||
|
return 24.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
3
Editor/Toolbar/Tools/ToolPlayerPrefs.cs.meta
Normal file
3
Editor/Toolbar/Tools/ToolPlayerPrefs.cs.meta
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 30a4a911912a49c0a00fd8953ad0ba41
|
||||||
|
timeCreated: 1670362836
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Text;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEditor.SceneManagement;
|
using UnityEditor.SceneManagement;
|
||||||
|
|
@ -17,31 +18,48 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
public override EToolbarPlacement Placement => EToolbarPlacement.Right;
|
public override EToolbarPlacement Placement => EToolbarPlacement.Right;
|
||||||
public override int Priority => (int)EToolbarPriority.Medium;
|
public override int Priority => (int)EToolbarPriority.Medium;
|
||||||
|
|
||||||
private static bool IS_DIRTY = true;
|
private static readonly List<int> SELECTED_INDICES = new List<int>();
|
||||||
private static int SELECTED_INDEX = -1;
|
private static readonly StringBuilder STRING_BUILDER = new StringBuilder();
|
||||||
private static string[] OPTIONS = new string[0];
|
private static string SCENE_LABEL = string.Empty;
|
||||||
private static string[] PATHS = new string[0];
|
private static string[] SCENE_NAMES = new string[0];
|
||||||
|
private static string[] SCENE_SHORT_NAMES = new string[0];
|
||||||
|
private static string[] SCENE_PATHS = new string[0];
|
||||||
|
private static readonly GUIContent LABEL_ADDITIVE = new GUIContent(string.Empty, "Toggles between Single and Additive scene loading");
|
||||||
|
|
||||||
|
|
||||||
|
private static bool IS_DIRTY = true;
|
||||||
|
|
||||||
private static void Initialize()
|
private static void Initialize()
|
||||||
{
|
{
|
||||||
if (!IS_DIRTY)
|
if (!IS_DIRTY)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
SELECTED_INDICES.Clear();
|
||||||
var listNames = new List<string>();
|
var listNames = new List<string>();
|
||||||
|
var listShortNames = new List<string>();
|
||||||
var listPaths = new List<string>();
|
var listPaths = new List<string>();
|
||||||
|
|
||||||
InitializeBuildSettingsScenes(listNames, listPaths);
|
InitializeBuildSettingsScenes(listNames, listShortNames, listPaths);
|
||||||
InitializeRemainingScenes(listNames, listPaths);
|
InitializeRemainingScenes(listNames, listShortNames, listPaths);
|
||||||
|
|
||||||
OPTIONS = listNames.ToArray();
|
for (var i = 0; i < SceneManager.sceneCount; i++)
|
||||||
PATHS = listPaths.ToArray();
|
{
|
||||||
|
Scene scene = SceneManager.GetSceneAt(i);
|
||||||
Scene activeScene = SceneManager.GetActiveScene();
|
int index = listPaths.IndexOf(scene.path);
|
||||||
SELECTED_INDEX = listPaths.IndexOf(activeScene.path);
|
|
||||||
|
if (index != -1)
|
||||||
|
SELECTED_INDICES.Add(listPaths.IndexOf(scene.path));
|
||||||
|
}
|
||||||
|
|
||||||
|
SCENE_NAMES = listNames.ToArray();
|
||||||
|
SCENE_SHORT_NAMES = listShortNames.ToArray();
|
||||||
|
SCENE_PATHS = listPaths.ToArray();
|
||||||
|
RefreshSceneLabel();
|
||||||
IS_DIRTY = false;
|
IS_DIRTY = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void InitializeBuildSettingsScenes(List<string> listNames, List<string> listPaths)
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
private static void InitializeBuildSettingsScenes(List<string> listNames, List<string> listShortNames, List<string> listPaths)
|
||||||
{
|
{
|
||||||
EditorBuildSettingsScene[] scenes = EditorBuildSettings.scenes;
|
EditorBuildSettingsScene[] scenes = EditorBuildSettings.scenes;
|
||||||
|
|
||||||
|
|
@ -50,12 +68,14 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
if (string.IsNullOrEmpty(scenes[i].path))
|
if (string.IsNullOrEmpty(scenes[i].path))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
listNames.Add($"{Path.GetFileNameWithoutExtension(scenes[i].path)}");
|
listNames.Add(Path.GetFileNameWithoutExtension(scenes[i].path));
|
||||||
|
listShortNames.Add(listNames[i]);
|
||||||
listPaths.Add(scenes[i].path);
|
listPaths.Add(scenes[i].path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void InitializeRemainingScenes(List<string> listNames, List<string> listPaths)
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||||
|
private static void InitializeRemainingScenes(List<string> listNames, List<string> listShortNames, List<string> listPaths)
|
||||||
{
|
{
|
||||||
List<string> sortByAssetLabels = ToolbarScenePickerSettings.SceneAssetLabels;
|
List<string> sortByAssetLabels = ToolbarScenePickerSettings.SceneAssetLabels;
|
||||||
var assetLabelToScenes = new SceneSortElement[sortByAssetLabels.Count + 1];
|
var assetLabelToScenes = new SceneSortElement[sortByAssetLabels.Count + 1];
|
||||||
|
|
@ -93,6 +113,7 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
assetLabelToScenes[index] = new SceneSortElement();
|
assetLabelToScenes[index] = new SceneSortElement();
|
||||||
|
|
||||||
assetLabelToScenes[index].names.Add(sceneName);
|
assetLabelToScenes[index].names.Add(sceneName);
|
||||||
|
assetLabelToScenes[index].shortNames.Add(Path.GetFileName(sceneName));
|
||||||
assetLabelToScenes[index].paths.Add(path);
|
assetLabelToScenes[index].paths.Add(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -104,13 +125,15 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
listNames.Add(string.Empty);
|
listNames.Add(string.Empty);
|
||||||
|
listShortNames.Add(string.Empty);
|
||||||
listPaths.Add(string.Empty);
|
listPaths.Add(string.Empty);
|
||||||
|
|
||||||
listNames.AddRange(e.names);
|
listNames.AddRange(e.names);
|
||||||
|
listShortNames.AddRange(e.shortNames);
|
||||||
listPaths.AddRange(e.paths);
|
listPaths.AddRange(e.paths);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Update()
|
public override void Update()
|
||||||
{
|
{
|
||||||
Initialize();
|
Initialize();
|
||||||
|
|
@ -119,29 +142,81 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
protected override void Draw(Rect rect)
|
protected override void Draw(Rect rect)
|
||||||
{
|
{
|
||||||
Initialize();
|
Initialize();
|
||||||
int temp = EditorGUI.Popup(rect, SELECTED_INDEX, OPTIONS, styles.popup);
|
var rect0 = new Rect(rect.x, rect.y, rect.width - 24.0f, rect.height);
|
||||||
|
var rect1 = new Rect(rect0.xMax, rect.y, 24.0f, rect.height);
|
||||||
|
|
||||||
if (temp <= -1 || temp == SELECTED_INDEX || OPTIONS.Length == 0)
|
if (GUI.Button(rect0, SCENE_LABEL, styles.popup))
|
||||||
return;
|
ShowDropDown(rect0);
|
||||||
if (string.IsNullOrEmpty(PATHS[temp]))
|
|
||||||
return;
|
|
||||||
|
|
||||||
try
|
bool isScenePickerSetAsAdditive = ToolbarScenePickerSettings.IsScenePickerSetAsAdditive;
|
||||||
|
bool temp = EditorGUI.Toggle(rect1, isScenePickerSetAsAdditive, styles.button);
|
||||||
|
GUI.Label(rect1, temp ? styles.iconPlusSmall : styles.iconPlusTiny, styles.labelCenter);
|
||||||
|
GUI.Label(rect1, LABEL_ADDITIVE, styles.labelCenter);
|
||||||
|
|
||||||
|
if (temp != isScenePickerSetAsAdditive)
|
||||||
|
ToolbarScenePickerSettings.IsScenePickerSetAsAdditive = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ShowDropDown(Rect rect)
|
||||||
|
{
|
||||||
|
var menu = new GenericMenu();
|
||||||
|
|
||||||
|
for (var i = 0; i < SCENE_NAMES.Length; i++)
|
||||||
{
|
{
|
||||||
Scene scene = EditorSceneManager.OpenScene(PATHS[temp], OpenSceneMode.Single);
|
int sceneIndex = i;
|
||||||
|
menu.AddItem(new GUIContent(SCENE_NAMES[i]), SELECTED_INDICES.Contains(i), () => SelectScene(sceneIndex));
|
||||||
if (scene.isLoaded)
|
|
||||||
SELECTED_INDEX = temp;
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
|
||||||
|
menu.DropDown(rect);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SelectScene(int index)
|
||||||
|
{
|
||||||
|
string path = SCENE_PATHS[index];
|
||||||
|
Scene scene = SceneManager.GetSceneByPath(path);
|
||||||
|
bool isScenePickerSetAsAdditive = ToolbarScenePickerSettings.IsScenePickerSetAsAdditive;
|
||||||
|
|
||||||
|
if (scene.isLoaded)
|
||||||
{
|
{
|
||||||
Debug.LogWarningFormat("Failed to load scene ({0}), due to exception: {1}", PATHS[temp], e.Message);
|
if (SceneManager.sceneCount == 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
EditorSceneManager.CloseScene(scene, true);
|
||||||
|
SELECTED_INDICES.Remove(index);
|
||||||
}
|
}
|
||||||
|
else if (isScenePickerSetAsAdditive)
|
||||||
|
{
|
||||||
|
EditorSceneManager.OpenScene(SCENE_PATHS[index], OpenSceneMode.Additive);
|
||||||
|
SELECTED_INDICES.Add(index);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EditorSceneManager.OpenScene(SCENE_PATHS[index], OpenSceneMode.Single);
|
||||||
|
SELECTED_INDICES.Clear();
|
||||||
|
SELECTED_INDICES.Add(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
RefreshSceneLabel();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RefreshSceneLabel()
|
||||||
|
{
|
||||||
|
STRING_BUILDER.Clear();
|
||||||
|
|
||||||
|
for (var i = 0; i < SELECTED_INDICES.Count; i++)
|
||||||
|
{
|
||||||
|
if (i > 0)
|
||||||
|
STRING_BUILDER.Append(", ");
|
||||||
|
|
||||||
|
STRING_BUILDER.Append(SCENE_SHORT_NAMES[SELECTED_INDICES[i]]);
|
||||||
|
}
|
||||||
|
|
||||||
|
SCENE_LABEL = STRING_BUILDER.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override float CalculateWidth()
|
public override float CalculateWidth()
|
||||||
{
|
{
|
||||||
return 100.0f;
|
return 124.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetAsDirty()
|
public static void SetAsDirty()
|
||||||
|
|
@ -152,6 +227,7 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
private sealed class SceneSortElement
|
private sealed class SceneSortElement
|
||||||
{
|
{
|
||||||
public readonly List<string> names = new List<string>();
|
public readonly List<string> names = new List<string>();
|
||||||
|
public readonly List<string> shortNames = new List<string>();
|
||||||
public readonly List<string> paths = new List<string>();
|
public readonly List<string> paths = new List<string>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,12 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
{
|
{
|
||||||
EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
|
EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
|
||||||
SceneManager.activeSceneChanged += OnActiveSceneChanged;
|
SceneManager.activeSceneChanged += OnActiveSceneChanged;
|
||||||
|
SceneManager.sceneLoaded += OnSceneLoaded;
|
||||||
|
SceneManager.sceneUnloaded += OnSceneUnloaded;
|
||||||
EditorSceneManager.newSceneCreated += OnNewSceneCreated;
|
EditorSceneManager.newSceneCreated += OnNewSceneCreated;
|
||||||
EditorSceneManager.activeSceneChangedInEditMode += OnActiveSceneChangedInEditMode;
|
EditorSceneManager.activeSceneChangedInEditMode += OnActiveSceneChangedInEditMode;
|
||||||
|
EditorSceneManager.sceneOpened += OnSceneOpened;
|
||||||
|
EditorSceneManager.sceneClosed += OnSceneClosed;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void OnPlayModeStateChanged(PlayModeStateChange state)
|
private static void OnPlayModeStateChanged(PlayModeStateChange state)
|
||||||
|
|
@ -24,6 +28,16 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
{
|
{
|
||||||
ToolScenePicker.SetAsDirty();
|
ToolScenePicker.SetAsDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void OnSceneLoaded(Scene scene, LoadSceneMode mode)
|
||||||
|
{
|
||||||
|
ToolScenePicker.SetAsDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void OnSceneUnloaded(Scene arg0)
|
||||||
|
{
|
||||||
|
ToolScenePicker.SetAsDirty();
|
||||||
|
}
|
||||||
|
|
||||||
private static void OnActiveSceneChangedInEditMode(Scene from, Scene to)
|
private static void OnActiveSceneChangedInEditMode(Scene from, Scene to)
|
||||||
{
|
{
|
||||||
|
|
@ -34,5 +48,15 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
{
|
{
|
||||||
ToolScenePicker.SetAsDirty();
|
ToolScenePicker.SetAsDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void OnSceneOpened(Scene scene, OpenSceneMode mode)
|
||||||
|
{
|
||||||
|
ToolScenePicker.SetAsDirty();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void OnSceneClosed(Scene scene)
|
||||||
|
{
|
||||||
|
ToolScenePicker.SetAsDirty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
45
Editor/Toolbar/Tools/ToolTargetFrameRate.cs
Normal file
45
Editor/Toolbar/Tools/ToolTargetFrameRate.cs
Normal file
|
|
@ -0,0 +1,45 @@
|
||||||
|
using JetBrains.Annotations;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
using UTools = UnityEditor.Tools;
|
||||||
|
|
||||||
|
namespace Module.NavigationTool.Editor.Toolbar
|
||||||
|
{
|
||||||
|
[UsedImplicitly]
|
||||||
|
internal sealed class ToolTargetFrameRate : AbstractToolbarDrawer
|
||||||
|
{
|
||||||
|
public override bool Visible => ToolbarTargetFrameRateSettings.IsTargetFrameRateEnabled;
|
||||||
|
public override bool Enabled => true;
|
||||||
|
public override EToolbarPlacement Placement => EToolbarPlacement.Left;
|
||||||
|
public override int Priority => (int)EToolbarPriority.Low;
|
||||||
|
|
||||||
|
private const string TOOLTIP = "Adjust Application.targetFrameRate from [min;max] target frame rate";
|
||||||
|
private static readonly GUIContent LABEL_TARGET_FRAME_RATE = new GUIContent("Target frame rate", TOOLTIP);
|
||||||
|
private static readonly GUIContent LABEL_TARGET_FRAME_RATE_VALUE = new GUIContent("0", TOOLTIP);
|
||||||
|
|
||||||
|
protected override void Draw(Rect rect)
|
||||||
|
{
|
||||||
|
int value = Application.targetFrameRate;
|
||||||
|
LABEL_TARGET_FRAME_RATE_VALUE.text = value.ToString("0");
|
||||||
|
|
||||||
|
var r0 = new Rect(rect.x, rect.y - 2.0f, rect.width, rect.height * 0.5f);
|
||||||
|
var r1 = new Rect(rect.x + 4.0f, rect.y + 2.0f, rect.width - 8.0f, rect.height * 0.5f);
|
||||||
|
var r2 = new Rect(rect.x, r1.yMax, rect.width, rect.height * 0.5f);
|
||||||
|
|
||||||
|
EditorGUI.LabelField(r0, LABEL_TARGET_FRAME_RATE, styles.centeredMiniLabel);
|
||||||
|
EditorGUI.LabelField(r2, LABEL_TARGET_FRAME_RATE_VALUE, styles.centeredMiniLabel);
|
||||||
|
|
||||||
|
float temp = GUI.HorizontalSlider(r1, value, ToolbarTargetFrameRateSettings.TargetFrameRateMinValue, ToolbarTargetFrameRateSettings.TargetFrameRateMaxValue);
|
||||||
|
int iTemp = Mathf.RoundToInt(temp);
|
||||||
|
iTemp = Mathf.Clamp(iTemp, ToolbarTargetFrameRateSettings.TargetFrameRateMinValue, ToolbarTargetFrameRateSettings.TargetFrameRateMaxValue);
|
||||||
|
|
||||||
|
if (value != iTemp)
|
||||||
|
Application.targetFrameRate = iTemp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override float CalculateWidth()
|
||||||
|
{
|
||||||
|
return 100.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
3
Editor/Toolbar/Tools/ToolTargetFrameRate.cs.meta
Normal file
3
Editor/Toolbar/Tools/ToolTargetFrameRate.cs.meta
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f4bbeb2ad2654431a57c36b7af639000
|
||||||
|
timeCreated: 1670355402
|
||||||
|
|
@ -13,16 +13,21 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
public override EToolbarPlacement Placement => EToolbarPlacement.Left;
|
public override EToolbarPlacement Placement => EToolbarPlacement.Left;
|
||||||
public override int Priority => (int)EToolbarPriority.Low;
|
public override int Priority => (int)EToolbarPriority.Low;
|
||||||
|
|
||||||
|
private const string TOOLTIP = "Adjust Time.timeScale from [min;max] and snaps when value is approximately 1.0";
|
||||||
|
private static readonly GUIContent LABEL_TIME_SCALE = new GUIContent("Time scale", TOOLTIP);
|
||||||
|
private static readonly GUIContent LABEL_TIME_VALUE = new GUIContent("0.00", TOOLTIP);
|
||||||
|
|
||||||
protected override void Draw(Rect rect)
|
protected override void Draw(Rect rect)
|
||||||
{
|
{
|
||||||
float value = Time.timeScale;
|
float value = Time.timeScale;
|
||||||
|
LABEL_TIME_VALUE.text = value.ToString("0.00");
|
||||||
|
|
||||||
var r0 = new Rect(rect.x, rect.y - 2.0f, rect.width, rect.height * 0.5f);
|
var r0 = new Rect(rect.x, rect.y - 2.0f, rect.width, rect.height * 0.5f);
|
||||||
var r1 = new Rect(rect.x + 4.0f, rect.y + 2.0f, rect.width - 8.0f, rect.height * 0.5f);
|
var r1 = new Rect(rect.x + 4.0f, rect.y + 2.0f, rect.width - 8.0f, rect.height * 0.5f);
|
||||||
var r2 = new Rect(rect.x, r1.yMax, rect.width, rect.height * 0.5f);
|
var r2 = new Rect(rect.x, r1.yMax, rect.width, rect.height * 0.5f);
|
||||||
|
|
||||||
EditorGUI.LabelField(r0, "Time scale", EditorStyles.centeredGreyMiniLabel);
|
EditorGUI.LabelField(r0, LABEL_TIME_SCALE, styles.centeredMiniLabel);
|
||||||
EditorGUI.LabelField(r2, value.ToString("0.00"), EditorStyles.centeredGreyMiniLabel);
|
EditorGUI.LabelField(r2, LABEL_TIME_VALUE, styles.centeredMiniLabel);
|
||||||
float temp = GUI.HorizontalSlider(r1, value, ToolbarTimeSettings.TimeScaleMinValue, ToolbarTimeSettings.TimeScaleMaxValue);
|
float temp = GUI.HorizontalSlider(r1, value, ToolbarTimeSettings.TimeScaleMinValue, ToolbarTimeSettings.TimeScaleMaxValue);
|
||||||
temp = Mathf.Clamp(temp, ToolbarTimeSettings.TimeScaleMinValue, ToolbarTimeSettings.TimeScaleMaxValue);
|
temp = Mathf.Clamp(temp, ToolbarTimeSettings.TimeScaleMinValue, ToolbarTimeSettings.TimeScaleMaxValue);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,12 +13,15 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
public override EToolbarPlacement Placement => EToolbarPlacement.Left;
|
public override EToolbarPlacement Placement => EToolbarPlacement.Left;
|
||||||
public override int Priority => (int)EToolbarPriority.Medium - 1;
|
public override int Priority => (int)EToolbarPriority.Medium - 1;
|
||||||
|
|
||||||
|
private static readonly GUIContent LABEL = new GUIContent("UI", "Toggles UI visible layer in SceneView");
|
||||||
|
|
||||||
protected override void Draw(Rect rect)
|
protected override void Draw(Rect rect)
|
||||||
{
|
{
|
||||||
int layer = 1 << LayerMask.NameToLayer("UI");
|
int layer = 1 << LayerMask.NameToLayer("UI");
|
||||||
bool value = (UTools.visibleLayers & layer) != 0;
|
bool value = (UTools.visibleLayers & layer) != 0;
|
||||||
|
|
||||||
bool temp = EditorGUI.Toggle(rect, value, styles.button);
|
bool temp = EditorGUI.Toggle(rect, value, styles.button);
|
||||||
GUI.Label(rect, "UI", styles.labelCenter);
|
GUI.Label(rect, LABEL, styles.labelCenter);
|
||||||
|
|
||||||
if (temp == value)
|
if (temp == value)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using UnityEngine;
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Module.NavigationTool.Editor.Toolbar
|
namespace Module.NavigationTool.Editor.Toolbar
|
||||||
{
|
{
|
||||||
|
|
@ -11,6 +12,12 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
public GUIStyle label;
|
public GUIStyle label;
|
||||||
public GUIStyle labelCenter;
|
public GUIStyle labelCenter;
|
||||||
public GUIStyle settingsGroup;
|
public GUIStyle settingsGroup;
|
||||||
|
public GUIStyle centeredMiniLabel;
|
||||||
|
|
||||||
|
public GUIContent iconPlusSmall;
|
||||||
|
public GUIContent iconPlusTiny;
|
||||||
|
public GUIContent iconDisconnect;
|
||||||
|
|
||||||
private GUISkin skin;
|
private GUISkin skin;
|
||||||
|
|
||||||
public void Initialize(GUISkin skin)
|
public void Initialize(GUISkin skin)
|
||||||
|
|
@ -24,6 +31,16 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
slider = new GUIStyle(skin.FindStyle("ToolbarSlider"));
|
slider = new GUIStyle(skin.FindStyle("ToolbarSlider"));
|
||||||
label = new GUIStyle(skin.FindStyle("ToolbarLabel"));
|
label = new GUIStyle(skin.FindStyle("ToolbarLabel"));
|
||||||
|
|
||||||
|
if (EditorGUIUtility.isProSkin)
|
||||||
|
{
|
||||||
|
centeredMiniLabel = EditorStyles.centeredGreyMiniLabel;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
centeredMiniLabel = new GUIStyle(EditorStyles.centeredGreyMiniLabel);
|
||||||
|
centeredMiniLabel.normal.textColor = label.normal.textColor;
|
||||||
|
}
|
||||||
|
|
||||||
buttonNoPadding = new GUIStyle(skin.FindStyle("toolbarbutton"))
|
buttonNoPadding = new GUIStyle(skin.FindStyle("toolbarbutton"))
|
||||||
{
|
{
|
||||||
padding = new RectOffset()
|
padding = new RectOffset()
|
||||||
|
|
@ -38,6 +55,10 @@ namespace Module.NavigationTool.Editor.Toolbar
|
||||||
{
|
{
|
||||||
margin = new RectOffset(8, 0, 8, 0)
|
margin = new RectOffset(8, 0, 8, 0)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
iconPlusSmall = EditorGUIUtility.IconContent("d_CreateAddNew");
|
||||||
|
iconPlusTiny = EditorGUIUtility.IconContent("Toolbar Plus");
|
||||||
|
iconDisconnect = EditorGUIUtility.IconContent("d_CacheServerDisconnected");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "com.module.navigationtool",
|
"name": "com.module.navigationtool",
|
||||||
"version": "1.7.2",
|
"version": "1.8.0",
|
||||||
"displayName": "Module.NavigationTool",
|
"displayName": "Module.NavigationTool",
|
||||||
"description": "Support for navigation tools, like favorites, history and toolbars",
|
"description": "Support for navigation tools, like favorites, history and toolbars",
|
||||||
"unity": "2019.2",
|
"unity": "2019.2",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue