using System;
using UnityEngine;
namespace PinballUncountable
{
///
/// 单条轨迹:Dome 内单颗球的烘焙位置序列(无需 collider 信息)
///
[Serializable]
public class SerializableDomeTrajectory
{
public Vector2[] positions;
public SerializableDomeTrajectory() => positions = Array.Empty();
public SerializableDomeTrajectory(Vector2[] positions) => this.positions = positions ?? Array.Empty();
}
///
/// 一次 Kick 的烘焙数据:每颗球一条轨迹
///
[Serializable]
public class DomeKickVariant
{
public SerializableDomeTrajectory[] trajectories = Array.Empty();
}
///
/// Dome 烘焙数据资源:多组 Kick 变体,运行时随机选一组回放
///
public class PinballUncountableDomeBakedData : ScriptableObject
{
public DomeKickVariant[] variants = Array.Empty();
///
/// 将某条可序列化轨迹转为 SimBall 使用的 FrameData(Collider 为空)
///
public static PinballUncountableFrameData[] ToFrameData(SerializableDomeTrajectory t)
{
if (t?.positions == null || t.positions.Length == 0)
return Array.Empty();
var frames = new PinballUncountableFrameData[t.positions.Length];
for (int i = 0; i < t.positions.Length; i++)
frames[i] = new PinballUncountableFrameData(t.positions[i], null);
return frames;
}
}
}