/// <summary> /// 現在の粒子を取得する /// </summary> /// <returns>現在の粒子の複製</returns> public Particle[] GetParticles() { // 複製配列を作成して、粒子群を複製 var clone = new Particle[this.particles.Length]; this.particles.CopyTo(clone, 0); // 複製したものを返す return clone; }
/// <summary> /// 粒子を追加する /// </summary> /// <param name="particle">追加する粒子</param> public void AddParticle(Particle particle) { // 入力粒子に追加 this.inputParticles.Add(particle); // 準備処理の時に this.prepare = () => { // 新しい粒子群配列を生成 var newParticles = new Particle[this.particles.Length + this.inputParticles.Count]; // 古い粒子群を新しい粒子群に複製 this.particles.CopyTo(newParticles, 0); // 入力粒子群を新しい粒子群に複製 this.inputParticles.CopyTo(newParticles, this.particles.Length); // 新しい粒子群を今の粒子群とする this.particles = newParticles; // 入力粒子群を空にする this.inputParticles.Clear(); // 準備処理は空 this.prepare = () => { }; }; }