Refactor settings assets proxies

This commit is contained in:
Wojtek Figat
2021-05-14 18:48:35 +02:00
parent 67aa41afb1
commit 5745e4e522
16 changed files with 40 additions and 400 deletions

View File

@@ -11,6 +11,8 @@ namespace FlaxEditor.Content
/// <seealso cref="FlaxEditor.Content.AssetItem" />
public class JsonAssetItem : AssetItem
{
private readonly SpriteHandle _thumbnail;
/// <summary>
/// Initializes a new instance of the <see cref="JsonAssetItem"/> class.
/// </summary>
@@ -20,13 +22,27 @@ namespace FlaxEditor.Content
public JsonAssetItem(string path, Guid id, string typeName)
: base(path, typeName, ref id)
{
_thumbnail = Editor.Instance.Icons.Document128;
}
/// <summary>
/// Initializes a new instance of the <see cref="JsonAssetItem"/> class.
/// </summary>
/// <param name="path">The path.</param>
/// <param name="id">The identifier.</param>
/// <param name="typeName">Name of the resource type.</param>
/// <param name="thumbnail">Asset icon.</param>
public JsonAssetItem(string path, Guid id, string typeName, SpriteHandle thumbnail)
: base(path, typeName, ref id)
{
_thumbnail = thumbnail;
}
/// <inheritdoc />
public override ContentItemSearchFilter SearchFilter => ContentItemSearchFilter.Json;
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.Document128;
public override SpriteHandle DefaultThumbnail => _thumbnail;
/// <inheritdoc />
protected override bool DrawShadow => false;

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.AndroidPlatformSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class AndroidPlatformSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="AndroidPlatformSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public AndroidPlatformSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.AndroidSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.GameSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class AudioSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="AudioSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public AudioSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.AudioSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.BuildSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class BuildSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="BuildSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public BuildSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.BuildSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.GameSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class GameSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="GameSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public GameSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.GameSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.GraphicsSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class GraphicsSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="GraphicsSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public GraphicsSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.GraphicsSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.InputSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class InputSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="InputSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public InputSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.InputSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.LayersAndTagsSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class LayersAndTagsSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="LayersAndTagsSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public LayersAndTagsSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.LayersTagsSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.LinuxPlatformSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class LinuxPlatformSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="LinuxPlatformSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public LinuxPlatformSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.LinuxSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.NavigationSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class NavigationSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="NavigationSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public NavigationSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.NavigationSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.PhysicsSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class PhysicsSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="PhysicsSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public PhysicsSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.PhysicsSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.TimeSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class TimeSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="TimeSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public TimeSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.TimeSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.UWPPlatformSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class UWPPlatformSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="UWPPlatformSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public UWPPlatformSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.UWPSettings128;
}
}

View File

@@ -1,28 +0,0 @@
// Copyright (c) 2012-2021 Wojciech Figat. All rights reserved.
using System;
using FlaxEngine;
namespace FlaxEditor.Content
{
/// <summary>
/// Content item that contains <see cref="FlaxEditor.Content.Settings.WindowsPlatformSettings"/> data.
/// </summary>
/// <seealso cref="FlaxEditor.Content.JsonAssetItem" />
public sealed class WindowsPlatformSettingsItem : JsonAssetItem
{
/// <summary>
/// Initializes a new instance of the <see cref="WindowsPlatformSettingsItem"/> class.
/// </summary>
/// <param name="path">The asset path.</param>
/// <param name="id">The asset identifier.</param>
/// <param name="typeName">The Name of the resource type.</param>
public WindowsPlatformSettingsItem(string path, Guid id, string typeName)
: base(path, id, typeName)
{
}
/// <inheritdoc />
public override SpriteHandle DefaultThumbnail => Editor.Instance.Icons.WindowsSettings128;
}
}

View File

@@ -3,6 +3,7 @@
using System;
using FlaxEditor.Content.Create;
using FlaxEditor.Content.Settings;
using FlaxEngine;
namespace FlaxEditor.Content
{
@@ -13,15 +14,18 @@ namespace FlaxEditor.Content
public sealed class SettingsProxy : JsonAssetProxy
{
private readonly Type _type;
private readonly SpriteHandle _thumbnail;
/// <summary>
/// Initializes a new instance of the <see cref="SettingsProxy"/> class.
/// </summary>
/// <param name="type">The settings asset type (must be subclass of SettingsBase type).</param>
public SettingsProxy(Type type)
/// <param name="thumbnail">Asset icon.</param>
public SettingsProxy(Type type, SpriteHandle thumbnail)
{
_type = type;
TypeName = type.FullName;
_thumbnail = thumbnail;
}
/// <inheritdoc />
@@ -47,23 +51,7 @@ namespace FlaxEditor.Content
/// <inheritdoc />
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);
return new JsonAssetItem(path, id, typeName, _thumbnail);
}
/// <inheritdoc />

View File

@@ -930,29 +930,29 @@ namespace FlaxEditor.Modules
Proxy.Add(new SpawnableJsonAssetProxy<PhysicalMaterial>());
// Settings
Proxy.Add(new SettingsProxy(typeof(GameSettings)));
Proxy.Add(new SettingsProxy(typeof(TimeSettings)));
Proxy.Add(new SettingsProxy(typeof(LayersAndTagsSettings)));
Proxy.Add(new SettingsProxy(typeof(PhysicsSettings)));
Proxy.Add(new SettingsProxy(typeof(GraphicsSettings)));
Proxy.Add(new SettingsProxy(typeof(NavigationSettings)));
Proxy.Add(new SettingsProxy(typeof(LocalizationSettings)));
Proxy.Add(new SettingsProxy(typeof(BuildSettings)));
Proxy.Add(new SettingsProxy(typeof(InputSettings)));
Proxy.Add(new SettingsProxy(typeof(WindowsPlatformSettings)));
Proxy.Add(new SettingsProxy(typeof(UWPPlatformSettings)));
Proxy.Add(new SettingsProxy(typeof(LinuxPlatformSettings)));
Proxy.Add(new SettingsProxy(typeof(GameSettings), Editor.Instance.Icons.GameSettings128));
Proxy.Add(new SettingsProxy(typeof(TimeSettings), Editor.Instance.Icons.TimeSettings128));
Proxy.Add(new SettingsProxy(typeof(LayersAndTagsSettings), Editor.Instance.Icons.LayersTagsSettings128));
Proxy.Add(new SettingsProxy(typeof(PhysicsSettings), Editor.Instance.Icons.PhysicsSettings128));
Proxy.Add(new SettingsProxy(typeof(GraphicsSettings), Editor.Instance.Icons.GraphicsSettings128));
Proxy.Add(new SettingsProxy(typeof(NavigationSettings), Editor.Instance.Icons.NavigationSettings128));
Proxy.Add(new SettingsProxy(typeof(LocalizationSettings), Editor.Instance.Icons.Document128));
Proxy.Add(new SettingsProxy(typeof(BuildSettings), Editor.Instance.Icons.BuildSettings128));
Proxy.Add(new SettingsProxy(typeof(InputSettings), Editor.Instance.Icons.InputSettings128));
Proxy.Add(new SettingsProxy(typeof(WindowsPlatformSettings), Editor.Instance.Icons.WindowsSettings128));
Proxy.Add(new SettingsProxy(typeof(UWPPlatformSettings), Editor.Instance.Icons.UWPSettings128));
Proxy.Add(new SettingsProxy(typeof(LinuxPlatformSettings), Editor.Instance.Icons.LinuxSettings128));
var typePS4PlatformSettings = TypeUtils.GetManagedType(GameSettings.PS4PlatformSettingsTypename);
if (typePS4PlatformSettings != null)
Proxy.Add(new SettingsProxy(typePS4PlatformSettings));
Proxy.Add(new SettingsProxy(typePS4PlatformSettings, Editor.Instance.Icons.PlaystationSettings128));
var typeXboxScarlettPlatformSettings = TypeUtils.GetManagedType(GameSettings.XboxScarlettPlatformSettingsTypename);
if (typeXboxScarlettPlatformSettings != null)
Proxy.Add(new SettingsProxy(typeXboxScarlettPlatformSettings));
Proxy.Add(new SettingsProxy(typeof(AndroidPlatformSettings)));
Proxy.Add(new SettingsProxy(typeXboxScarlettPlatformSettings, Editor.Instance.Icons.XBoxScarletIcon128));
Proxy.Add(new SettingsProxy(typeof(AndroidPlatformSettings), Editor.Instance.Icons.AndroidSettings128));
var typeSwitchPlatformSettings = TypeUtils.GetManagedType(GameSettings.SwitchPlatformSettingsTypename);
if (typeSwitchPlatformSettings != null)
Proxy.Add(new SettingsProxy(typeSwitchPlatformSettings));
Proxy.Add(new SettingsProxy(typeof(AudioSettings)));
Proxy.Add(new SettingsProxy(typeSwitchPlatformSettings, Editor.Instance.Icons.Document128));
Proxy.Add(new SettingsProxy(typeof(AudioSettings), Editor.Instance.Icons.AudioSettings128));
// Last add generic json (won't override other json proxies)
Proxy.Add(new GenericJsonAssetProxy());