Files
FlaxEngine/Source/Editor/Content/Tree/MainContentTreeNode.cs
2023-11-24 10:53:43 -06:00

63 lines
1.8 KiB
C#

// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System.IO;
namespace FlaxEditor.Content
{
/// <summary>
/// Content tree node used for main directories.
/// </summary>
/// <seealso cref="FlaxEditor.Content.ContentTreeNode" />
public class MainContentTreeNode : ContentTreeNode
{
private FileSystemWatcher _watcher;
/// <inheritdoc />
public override bool CanDelete => false;
/// <inheritdoc />
public override bool CanDuplicate => false;
/// <summary>
/// Initializes a new instance of the <see cref="MainContentTreeNode"/> class.
/// </summary>
/// <param name="parent">The parent project.</param>
/// <param name="type">The folder type.</param>
/// <param name="path">The folder path.</param>
public MainContentTreeNode(ProjectTreeNode parent, ContentFolderType type, string path)
: base(parent, type, path)
{
_watcher = new FileSystemWatcher(path)
{
IncludeSubdirectories = true,
EnableRaisingEvents = true
};
//_watcher.Changed += OnEvent;
_watcher.Created += OnEvent;
_watcher.Deleted += OnEvent;
_watcher.Renamed += OnEvent;
}
private void OnEvent(object sender, FileSystemEventArgs e)
{
Editor.Instance.ContentDatabase.OnDirectoryEvent(this, e);
}
/// <inheritdoc />
protected override void DoDragDrop()
{
// No drag for root nodes
}
/// <inheritdoc />
public override void OnDestroy()
{
_watcher.EnableRaisingEvents = false;
_watcher.Dispose();
_watcher = null;
base.OnDestroy();
}
}
}