AI/Guests/Inventory/Components/TrashPile.cs
using HC3.Persistence;
namespace HC3.Inventory;
public class TrashPile : Component, IPrefabSourceComponent<TrashPile.SaveData>
{
public record SaveData( Vector3 Position, Rotation Rotation );
public static List<TrashPile> All { get; } = [];
protected override void OnAwake()
{
if ( GameObject.IsPrefabInstanceRoot )
{
PrefabSource = GameObject.PrefabInstanceSource;
}
All.Add( this );
}
protected override void OnDestroy()
{
All.Remove( this );
}
public string PrefabSource { get; private set; }
public SaveData GetSaveData()
{
return new( WorldPosition, WorldRotation );
}
public void Spawn( SaveData saveData )
{
WorldPosition = saveData.Position;
WorldRotation = saveData.Rotation;
GameObject.Root.NetworkSpawn();
}
}
file sealed class TrashSaveData : SpawnedPrefabSaveData<TrashPile, TrashPile.SaveData>
{
public override string PropertyName => "Trash";
}