// Copyright (c) Wojciech Figat. All rights reserved. using System; using FlaxEditor.GUI.ContextMenu; using FlaxEditor.Windows; using FlaxEngine; namespace FlaxEditor.Content { /// /// Content proxy for . /// /// [ContentContextMenu("New/Scene")] public sealed class SceneProxy : JsonAssetBaseProxy { /// /// The scene files extension. /// public static readonly string Extension = "scene"; /// public override string Name => "Scene"; /// public override string FileExtension => Extension; /// public override bool IsProxyFor(ContentItem item) { return item is SceneItem; } /// public override bool AcceptsAsset(string typeName, string path) { return (typeName == Scene.AssetTypename || typeName == Scene.EditorPickerTypename) && path.EndsWith(FileExtension, StringComparison.OrdinalIgnoreCase); } /// public override bool CanCreate(ContentFolder targetLocation) { return targetLocation.CanHaveAssets; } /// public override void Create(string outputPath, object arg) { Editor.Instance.Scene.CreateSceneFile(outputPath); } /// public override EditorWindow Open(Editor editor, ContentItem item) { // Load scene Editor.Instance.Scene.OpenScene(((SceneItem)item).ID); return null; } /// public override Color AccentColor => Color.FromRGB(0xbb37ef); /// public override string TypeName => Scene.AssetTypename; /// public override AssetItem ConstructItem(string path, string typeName, ref Guid id) { return new SceneItem(path, id); } /// public override void OnContentWindowContextMenu(ContextMenu menu, ContentItem item) { var id = ((SceneItem)item).ID; if (Level.FindScene(id) == null) { menu.AddButton("Open (additive)", () => { Editor.Instance.Scene.OpenScene(id, true); }); } } } }