UniversalViewer/Assets/Scripts/ModelViewerBase/Containers/SceneContainer.cs

46 lines
1.1 KiB
C#
Raw Permalink Normal View History

2024-04-21 22:38:26 +08:00
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
[System.Serializable]
public class SceneContainer
2024-04-21 22:38:26 +08:00
{
public string GUID;
2024-04-21 22:38:26 +08:00
public List<ObjectContainer> AllObjects = new List<ObjectContainer>();
public List<T> Objects<T>() where T : ObjectContainer
{
return AllObjects.Cast<T>().ToList();
}
public SceneContainer() { }
public static SceneContainer Create<T>(ModelViewerMain main) where T : SceneContainer, new()
2024-04-21 22:38:26 +08:00
{
var container = new T();
2024-04-21 22:38:26 +08:00
container.Init(main);
return container;
}
public virtual void Init(ModelViewerMain main)
{
GUID = "scene";
if (!AllObjects.Contains(main.MainCameraOrbit)) { AllObjects.Add(main.MainCameraOrbit); }
2024-04-21 22:38:26 +08:00
}
public virtual SceneSerializable Serialize()
2024-04-21 22:38:26 +08:00
{
return new SceneSerializable(this);
}
public virtual void Destroy()
{
for (int i = AllObjects.Count - 1; i >= 0; i--)
{
var obj = AllObjects[i];
obj.Destroy();
}
AllObjects.Clear();
}
2024-04-21 22:38:26 +08:00
}