using Cryville.Common; using Cryville.Common.Buffers; using System.Collections.Generic; namespace Cryville.Crtr.Event { internal class RMVPool : CategorizedPool { private class Bucket : ObjectPool { readonly MotionRegistry _reg; public Bucket(Identifier name, int capacity) : base(capacity) { _reg = ChartPlayer.motionRegistry[name]; } protected override RealtimeMotionValue Construct() { return new RealtimeMotionValue().Init(_reg.InitValue); } } readonly Dictionary> m_buckets; protected override IReadOnlyDictionary> Buckets { get { return m_buckets; } } public RMVPool() { m_buckets = new Dictionary>(ChartPlayer.motionRegistry.Count); foreach (var reg in ChartPlayer.motionRegistry) m_buckets.Add(reg.Key, new Bucket(reg.Key, 4096)); } } }