// 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(); } } }