Exemple #1
0
    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();
    }
Exemple #2
0
        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;
        }
Exemple #3
0
 private void TestLinkProperty(ParticleLink link, Vector2D pointA, Vector2D pointB)
 {
     Assert.AreEqual(pointA, link.ParticleA.Position);
     Assert.AreEqual(pointB, link.ParticleB.Position);
 }
Exemple #4
0
 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);
 }