using System.Collections.Generic; using JetBrains.Annotations; using Needle.Cloud.Runtime; using Needle.Engine.Gltf; using UnityEngine; namespace Needle.Cloud.Editor { [UsedImplicitly] public class CloudExportHandler : GltfExtensionHandlerBase { private readonly List tempObjects = new List(); public override void OnBeforeExport(GltfExportContext context) { base.OnBeforeExport(context); var cloudAssets = context.Root.GetComponentsInChildren(); foreach (var cloud in cloudAssets) { OnHandleCloudAsset(cloud.transform, cloud); } } private void OnHandleCloudAsset(Transform t, NeedleCloudAsset asset) { var ng = t.gameObject.AddComponent(); ng.hideFlags = HideFlags.DontSave; ng.LoadAssetInParent = false; tempObjects.Add(ng); ng.FilePath = asset.Url; } public override void OnExportFinished(GltfExportContext context) { base.OnExportFinished(context); tempObjects.ForEach(Object.DestroyImmediate); } } }