public void CacheParticleData(SpaceSnapshot snapshot)
 {
     foreach (var particle in snapshot.AllParticles)
     {
         particleDataCache[particle.Id] = particle.GetParticleData <GravityParticleData>();
     }
 }
Пример #2
0
        public SpaceSnapshot CreateSpaceSnapshot(List <Particle> particles)
        {
            var spaceSnapshot = new SpaceSnapshot()
            {
                AllParticles = particles.ToArray()//particles.Select(x => x.Clone()).ToList()
            };

            return(spaceSnapshot);
        }
        public void TestCollisionOverlap()
        {
            var physicsController = new PhysicsController();
            var interactions      = new Dictionary <int, ParticleInteraction>();

            interactions.Add(1, new ParticleInteraction()
            {
                GraphDots = new List <Vector2>()
                {
                    new Vector2(0, 1),
                    new Vector2(8, 0),
                    new Vector2(16, 1),
                    new Vector2(32, 0)
                }
            });

            var particleType = new ParticleType(1, interactions, Color.Black);
            var particle1    = new Particle(1, particleType, new Vector2());
            var particle2    = new Particle(2, particleType, new Vector2());

            var spaceSnapshot = new SpaceSnapshot()
            {
                AllParticles = new List <Particle>()
                {
                    particle1, particle2
                }
            };


            physicsController.UpdateParticle(new ParticleJobSchedule()
            {
                Particle      = particle1,
                SpaceSnapshot = spaceSnapshot
            });

            particle1.Position = particle1.ScheduledPosition;

            physicsController.UpdateParticle(new ParticleJobSchedule()
            {
                Particle      = particle2,
                SpaceSnapshot = spaceSnapshot
            });

            Assert.AreNotEqual(particle1.ScheduledPosition, Vector2.Zero);
            Assert.AreNotEqual(particle2.ScheduledPosition, Vector2.Zero);

            Assert.AreNotEqual(particle1.ScheduledPosition, particle2.ScheduledPosition);
        }
 public void CacheParticleData(SpaceSnapshot spaceSnapshot)
 {
     // pass
 }