private void FixedUpdate() { foreach (Particle2DLink ParticleLink in mParticleLinks) { if (ParticleLink == null) { mDeadLinks.Add(ParticleLink); } else { ParticleLink.CreateContacts(mContacts); } } foreach (Particle2DLink linkToRemove in mDeadLinks) { if (linkToRemove != null) { mParticleLinks.Remove(linkToRemove); } } mDeadLinks.Clear(); ResolveContacts(mContacts, 10); foreach (Particle2DCollision contact in mContacts) { Destroy(contact); } mContacts.Clear(); }
private void CreateEntitySimulation(SimEntity e) { var nodes = e.Components.Where(c => c.Kind == NODE_KIND).Select(c => c.Attributes[0]); var conns = e.Components .Where(c => c.Kind == CONNECTION_KIND) .Select(c => new { N1 = c.CustomData[0], // node id: from N2 = c.CustomData[1], // node id: to L = c.Attributes[0], C = c.Attributes[1], P = c.Attributes[2], }); var s = new Simulation(); foreach (var friction in nodes) { //var pos = new System.Numerics.Vector2(0, 1); // var p = new Particle(pos); var p = new Particle(); p.Friction = friction; s.AddParticle(p); } foreach (var conn in conns) { var pl = new ParticleLink(s.Particles[conn.N1], s.Particles[conn.N2], conn.L, conn.P, conn.C); s.AddParticleLink(pl); } e.Simulation = s; }
private void TestLinkProperty(ParticleLink link, Vector2D pointA, Vector2D pointB) { Assert.AreEqual(pointA, link.ParticleA.Position); Assert.AreEqual(pointB, link.ParticleB.Position); }
internal static global::System.Runtime.InteropServices.HandleRef getCPtr(ParticleLink obj) { return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr); }