Files
Studio/Assets/Scripts/Studio/Command/ObjectCommand/RemoveAllObjectCommand.cs

70 lines
2.6 KiB
C#

using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Studio.AssetTool;
using Studio.Command;
using Studio.HierarchyTree;
using Studio.Manage;
using Studio.Util;
namespace Studio
{
public class RemoveAllObjectCommand : IIrreversibleCommand
{
public RemoveAllObjectCommand()
{
}
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
public bool CanExecute()
{
throw new System.NotImplementedException();
}
public void Execute()
{
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
List<CustomAssetRenderObject> objects = connector.connectedAssets.Select(x => x.renderObject).ToList();
if (objects.Count == 0)
return;
List<ConnectedAsset> removeList = new List<ConnectedAsset>();
List<int> siblingIndex = new List<int>();
for (int i = 0; i < objects.Count; i++)
{
ConnectedAsset searchAsset = connector.connectedAssets.Find((x) => x.renderObject == objects[i]);
removeList.Add(searchAsset);
siblingIndex.Add(searchAsset.hierarchyItem.GetSiblingIndex());
}
for (int i = 0; i < removeList.Count; i++)
{
ConnectedAsset connectedAsset = removeList[i];
connector.componentScrollView.RemoveItem(connectedAsset.hierarchyItem);
connectedAsset.assetData.RemoveTransform(connectedAsset.renderObject.transform);
connectedAsset.renderObject.gameObject.SetActive(false);
List<HierarchyItem> childItems = connectedAsset.hierarchyItem.GetAll(true);
for (int k = 0; k < childItems.Count; k++)
{
ConnectedAsset searchAsset = connector.connectedAssets.Find((x) => x.hierarchyItem == childItems[k]);
searchAsset.assetData.RemoveTransform(searchAsset.renderObject.transform);
searchAsset.renderObject.gameObject.SetActive(false);
}
}
//connector.onRemoveObjects?.Invoke();
var canvas = CanvasManager.instance.GetCanvas<Canvas_Popup>();
canvas.panel_dynamicobjectinfo.ResetObjectInfo();
connector.componentScrollView.DeselectAll();
CanvasManager.instance.GetCanvas<Canvas_Popup>().panel_dynamicobjectinfo.ResetObjectInfo();
ManagerHub.instance.Get<RenderObjectHandler>().DeselectAll();
connector.DestoryConnectedAssetAll();
}
}
}