// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using System;
using FlaxEditor.GUI;
using FlaxEngine;
using FlaxEngine.Utilities;
namespace FlaxEditor.Surface.Elements
{
///
/// Assets picking control.
///
///
///
[HideInEditor]
public class AssetSelect : AssetPicker, ISurfaceNodeElement
{
///
public SurfaceNode ParentNode { get; }
///
public NodeElementArchetype Archetype { get; }
///
/// Initializes a new instance of the class.
///
/// The parent node.
/// The archetype.
public AssetSelect(SurfaceNode parentNode, NodeElementArchetype archetype)
: base(TypeUtils.GetType(archetype.Text), archetype.ActualPosition)
{
ParentNode = parentNode;
Archetype = archetype;
ParentNode.ValuesChanged += OnNodeValuesChanged;
OnNodeValuesChanged();
}
private void OnNodeValuesChanged()
{
SelectedID = (Guid)ParentNode.Values[Archetype.ValueIndex];
}
///
protected override void OnSelectedItemChanged()
{
var selectedId = SelectedID;
if (ParentNode != null && (Guid)ParentNode.Values[Archetype.ValueIndex] != selectedId)
{
ParentNode.SetValue(Archetype.ValueIndex, selectedId);
}
base.OnSelectedItemChanged();
}
}
}