/*
<copyright file="BGGCGetTexture2D.cs" company="BansheeGz">
    Copyright (c) 2018-2022 All Rights Reserved
</copyright>
*/

using System;
using GameCreator.Runtime.Common;
using GameCreator.Runtime.Variables;
using UnityEngine;

namespace BansheeGz.BGDatabase
{
    /// <summary>
    ///  get Texture2D value from database
    /// </summary>
    [Title("BGDatabase: get texture")]
    [Category("BansheeGz/get texture")]
    [Serializable]
    public class BGGCGetTexture2D : BGGCGetA
    {
        [SerializeField] private PropertySetTexture saveToVar = SetTextureGlobalName.Create;

        public override string Title => "BGDatabase: Get texture";

        public override bool IsSupported(BGField field)
        {
            return field is BGFieldUnityTexture ||
                   field is BGFieldUnityTexture2d ||
                   (
                       field is BGFieldUnityObject unityObject &&
                       unityObject.AssetType != null &&
                       typeof(Texture).IsAssignableFrom(unityObject.AssetType)
                   );
        }
        protected override void Set(BGGCCell cell, Args args) => saveToVar.Set((Texture)cell.Value, args);
    }
}