diff --git a/Source/Editor/Content/Items/SettingsItem/AndroidPlatformSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/AndroidPlatformSettingsItem.cs
new file mode 100644
index 000000000..4b161bbef
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/AndroidPlatformSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class AndroidPlatformSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ ///
+ public AndroidPlatformSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.AndroidSettings;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/AudioSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/AudioSettingsItem.cs
new file mode 100644
index 000000000..69a931126
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/AudioSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class AudioSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ ///
+ public AudioSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.AudioSettings;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/BuildSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/BuildSettingsItem.cs
new file mode 100644
index 000000000..6f471d912
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/BuildSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class BuildSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ ///
+ public BuildSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.BuildSettings;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/GameSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/GameSettingsItem.cs
new file mode 100644
index 000000000..f45fca855
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/GameSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class GameSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ ///
+ public GameSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document64;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/GraphicsSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/GraphicsSettingsItem.cs
new file mode 100644
index 000000000..8122ee54f
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/GraphicsSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class GraphicsSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ ///
+ public GraphicsSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document64;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/InputSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/InputSettingsItem.cs
new file mode 100644
index 000000000..3b532799e
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/InputSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class InputSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ ///
+ public InputSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.InputSettings;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/LayersAndTagsSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/LayersAndTagsSettingsItem.cs
new file mode 100644
index 000000000..75485a279
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/LayersAndTagsSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class LayersAndTagsSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ ///
+ public LayersAndTagsSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.LayersAndTagsSettings;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/LinuxPlatformSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/LinuxPlatformSettingsItem.cs
new file mode 100644
index 000000000..4e43326f0
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/LinuxPlatformSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class LinuxPlatformSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ /// Name of the resource type.
+ public LinuxPlatformSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.LinuxSettings;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/NavigationSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/NavigationSettingsItem.cs
new file mode 100644
index 000000000..a2e9c58e4
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/NavigationSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class NavigationSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ ///
+ public NavigationSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.NavigationSettings;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/PhysicsSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/PhysicsSettingsItem.cs
new file mode 100644
index 000000000..9613f3b72
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/PhysicsSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class PhysicsSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ ///
+ public PhysicsSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.PhysicsSettings;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/TimeSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/TimeSettingsItem.cs
new file mode 100644
index 000000000..d5c4769c6
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/TimeSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class TimeSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ ///
+ public TimeSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document64;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/UWPPlatformSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/UWPPlatformSettingsItem.cs
new file mode 100644
index 000000000..8e11af39f
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/UWPPlatformSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class UWPPlatformSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ /// Name of the resource type.
+ public UWPPlatformSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.UWPSettings;
+ }
+}
diff --git a/Source/Editor/Content/Items/SettingsItem/WindowsPlatformSettingsItem.cs b/Source/Editor/Content/Items/SettingsItem/WindowsPlatformSettingsItem.cs
new file mode 100644
index 000000000..5fc52815d
--- /dev/null
+++ b/Source/Editor/Content/Items/SettingsItem/WindowsPlatformSettingsItem.cs
@@ -0,0 +1,28 @@
+// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
+
+using System;
+using FlaxEngine;
+
+namespace FlaxEditor.Content
+{
+ ///
+ /// Content item that contains data.
+ ///
+ ///
+ public sealed class WindowsPlatformSettingsItem : JsonAssetItem
+ {
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The asset path.
+ /// The asset identifier.
+ /// Name of the resource type.
+ public WindowsPlatformSettingsItem(string path, Guid id, string typeName)
+ : base(path, id, typeName)
+ {
+ }
+
+ ///
+ public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.WindowsSettings;
+ }
+}
diff --git a/Source/Editor/Content/Proxy/SettingsProxy.cs b/Source/Editor/Content/Proxy/SettingsProxy.cs
index a6b74b0ea..df927fef2 100644
--- a/Source/Editor/Content/Proxy/SettingsProxy.cs
+++ b/Source/Editor/Content/Proxy/SettingsProxy.cs
@@ -3,6 +3,7 @@
using System;
using FlaxEditor.Content.Create;
using FlaxEditor.Content.Settings;
+using FlaxEditor.Modules;
namespace FlaxEditor.Content
{
@@ -44,6 +45,28 @@ namespace FlaxEditor.Content
Editor.Instance.ContentImporting.Create(new SettingsCreateEntry(outputPath));
}
+ ///
+ public override AssetItem ConstructItem(string path, string typeName, ref Guid id)
+ {
+ switch (typeName.Substring(typeName.LastIndexOf('.')+1))
+ {
+ case "GameSettings": return new GameSettingsItem(path, id, typeName);
+ case "AndroidPlatformSettings": return new AndroidPlatformSettingsItem(path, id, typeName);
+ case "AudioSettings": return new AudioSettingsItem(path, id, typeName);
+ case "BuildSettings": return new BuildSettingsItem(path, id, typeName);
+ case "GraphicsSettings": return new GraphicsSettingsItem(path, id, typeName);
+ case "InputSettings": return new InputSettingsItem(path, id, typeName);
+ case "LayersAndTagsSettings": return new LayersAndTagsSettingsItem(path, id, typeName);
+ case "LinuxPlatformSettings": return new LinuxPlatformSettingsItem(path, id, typeName);
+ case "NavigationSettings": return new NavigationSettingsItem(path, id, typeName);
+ case "PhysicsSettings": return new PhysicsSettingsItem(path, id, typeName);
+ case "TimeSettings": return new TimeSettingsItem(path, id, typeName);
+ case "UWPPlatformSettings": return new UWPPlatformSettingsItem(path, id, typeName);
+ case "WindowsPlatformSettings": return new WindowsPlatformSettingsItem(path, id, typeName);
+ }
+ return base.ConstructItem(path, typeName, ref id);
+ }
+
///
public override bool IsProxyFor()
{
diff --git a/Source/Editor/Editor.cs b/Source/Editor/Editor.cs
index 5cada5d87..f09ff3332 100644
--- a/Source/Editor/Editor.cs
+++ b/Source/Editor/Editor.cs
@@ -220,7 +220,7 @@ namespace FlaxEditor
GameProject = ProjectInfo.Load(Internal_GetProjectPath());
Icons = new EditorIcons();
- Icons.GetIcons();
+ Icons.LoadIcons();
// Create common editor modules
RegisterModule(Options = new OptionsModule(this));
diff --git a/Source/Editor/EditorIcons.cs b/Source/Editor/EditorIcons.cs
index 700b5e25e..4d79155f4 100644
--- a/Source/Editor/EditorIcons.cs
+++ b/Source/Editor/EditorIcons.cs
@@ -16,102 +16,120 @@ namespace FlaxEditor
[HideInEditor]
public sealed class EditorIcons
{
- public SpriteHandle FolderClosed12;
- public SpriteHandle FolderOpened12;
- public SpriteHandle DragBar12;
+ // 12px
public SpriteHandle ArrowDown12;
public SpriteHandle ArrowRight12;
- public SpriteHandle Search12;
- public SpriteHandle Settings12;
- public SpriteHandle Cross12;
public SpriteHandle CheckBoxIntermediate12;
public SpriteHandle CheckBoxTick12;
+ public SpriteHandle Cross12;
+ public SpriteHandle DragBar12;
+ public SpriteHandle FolderClosed12;
+ public SpriteHandle FolderOpened12;
+ public SpriteHandle Search12;
+ public SpriteHandle Settings12;
public SpriteHandle StatusBarSizeGrip12;
+ // 16px
public SpriteHandle ArrowRightBorder16;
- public SpriteHandle World16;
- public SpriteHandle ScaleStep16;
- public SpriteHandle RotateStep16;
- public SpriteHandle Grid16;
- public SpriteHandle Translate16;
- public SpriteHandle Rotate16;
- public SpriteHandle Scale16;
- public SpriteHandle Link16;
public SpriteHandle Docs16;
+ public SpriteHandle Grid16;
+ public SpriteHandle Link16;
+ public SpriteHandle Rotate16;
+ public SpriteHandle RotateStep16;
+ public SpriteHandle Scale16;
+ public SpriteHandle ScaleStep16;
+ public SpriteHandle Translate16;
+ public SpriteHandle World16;
- public SpriteHandle Save32;
- public SpriteHandle Undo32;
- public SpriteHandle Redo32;
- public SpriteHandle Translate32;
- public SpriteHandle Rotate32;
- public SpriteHandle Scale32;
- public SpriteHandle Play32;
- public SpriteHandle Pause32;
- public SpriteHandle Step32;
- public SpriteHandle Stop32;
- public SpriteHandle PageScale32;
- public SpriteHandle Bone32;
- public SpriteHandle Docs32;
- public SpriteHandle Import32;
+ // 32px
public SpriteHandle AddDoc32;
- public SpriteHandle RemoveDoc32;
- public SpriteHandle BracketsSlash32;
- public SpriteHandle Find32;
- public SpriteHandle Reload32;
+ public SpriteHandle ArrowDown32;
public SpriteHandle ArrowLeft32;
public SpriteHandle ArrowRight32;
- public SpriteHandle ArrowDown32;
public SpriteHandle ArrowUp32;
+ public SpriteHandle Bone32;
+ public SpriteHandle BracketsSlash32;
+ public SpriteHandle Build32;
+ public SpriteHandle Camera32;
+ public SpriteHandle Docs32;
public SpriteHandle Error32;
- public SpriteHandle Warning32;
- public SpriteHandle Info32;
- public SpriteHandle UV32;
+ public SpriteHandle Find32;
public SpriteHandle Image32;
+ public SpriteHandle Import32;
+ public SpriteHandle Info32;
public SpriteHandle Link32;
public SpriteHandle Next32;
- public SpriteHandle Camera32;
- public SpriteHandle Build32;
+ public SpriteHandle PageScale32;
+ public SpriteHandle Pause32;
+ public SpriteHandle Play32;
+ public SpriteHandle Redo32;
+ public SpriteHandle Reload32;
+ public SpriteHandle RemoveDoc32;
+ public SpriteHandle Rotate32;
+ public SpriteHandle Save32;
+ public SpriteHandle Scale32;
+ public SpriteHandle Step32;
+ public SpriteHandle Stop32;
+ public SpriteHandle Translate32;
+ public SpriteHandle Undo32;
+ public SpriteHandle UV32;
+ public SpriteHandle Warning32;
+ // 48px
public SpriteHandle Add48;
- public SpriteHandle Paint48;
public SpriteHandle Foliage48;
public SpriteHandle Mountain48;
+ public SpriteHandle Paint48;
- public SpriteHandle Plugin64;
- public SpriteHandle Document64;
- public SpriteHandle CSharpScript64;
- public SpriteHandle CppScript64;
- public SpriteHandle Folder64;
- public SpriteHandle Scene64;
+ // 64px
public SpriteHandle CodeScript64;
+ public SpriteHandle CppScript64;
+ public SpriteHandle CSharpScript64;
+ public SpriteHandle Document64;
+ public SpriteHandle Folder64;
+ public SpriteHandle Plugin64;
+ public SpriteHandle Scene64;
+ // 128px
public SpriteHandle Logo128;
- public SpriteHandle VisjectBoxOpen;
- public SpriteHandle VisjectBoxClose;
+ // Visject
public SpriteHandle VisjectArrowOpen;
public SpriteHandle VisjectArrowClose;
+ public SpriteHandle VisjectBoxOpen;
+ public SpriteHandle VisjectBoxClose;
+ // Platforms
+ public SpriteHandle Android;
public SpriteHandle AssetShadow;
public SpriteHandle ColorWheel;
- public SpriteHandle Windows;
- public SpriteHandle XboxOne;
- public SpriteHandle WindowsStore;
public SpriteHandle Linux;
public SpriteHandle PS4;
+ public SpriteHandle WindowsStore;
+ public SpriteHandle Windows;
+ public SpriteHandle XboxOne;
public SpriteHandle XboxSeriesX;
- public SpriteHandle Android;
- internal void GetIcons()
+ // Settings
+ public SpriteHandle AndroidSettings;
+ public SpriteHandle AudioSettings;
+ public SpriteHandle BuildSettings;
+ public SpriteHandle GameSettings;
+ public SpriteHandle PhysicsSettings;
+ public SpriteHandle GraphicsSettings;
+ public SpriteHandle InputSettings;
+ public SpriteHandle LayersAndTagsSettings;
+ public SpriteHandle LinuxSettings;
+ public SpriteHandle NavigationSettings;
+ public SpriteHandle TimeSettings;
+ public SpriteHandle UWPSettings;
+ public SpriteHandle WindowsSettings;
+
+ internal void LoadIcons()
{
- // Load asset
+ // Load & validate
var iconsAtlas = FlaxEngine.Content.LoadAsyncInternal(EditorAssets.IconsAtlas);
- if (iconsAtlas == null)
- {
- Editor.LogError("Cannot load editor icons atlas.");
- return;
- }
- if (iconsAtlas.WaitForLoaded())
+ if (iconsAtlas == null || iconsAtlas.WaitForLoaded())
{
Editor.LogError("Failed to load editor icons atlas.");
return;
@@ -122,11 +140,11 @@ namespace FlaxEditor
for (int i = 0; i < fields.Length; i++)
{
var field = fields[i];
+
var sprite = iconsAtlas.FindSprite(field.Name);
if (!sprite.IsValid)
- {
- Editor.LogWarning(string.Format("Failed to load sprite icon \'{0}\'.", field.Name));
- }
+ Editor.LogWarning($"Failed to load sprite icon \'{field.Name}\'.");
+
field.SetValue(this, sprite);
}
}