70 lines
2.6 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|