Jitter.Dynamics.SoftBody.Update C# (CSharp) Method

Update() public method

public Update ( float timestep ) : void
timestep float
return void
        public void Update(float timestep)
        {
            active = false;

            foreach (MassPoint point in points)
            {
                if (point.isActive && !point.isStatic) { active = true; break; }
            }

            if(!active) return;

            box = JBBox.SmallBox;
            volume = 0.0f;
            mass = 0.0f;

            foreach (MassPoint point in points)
            {
                mass += point.Mass;
                box.AddPoint(point.position);
            }

            box.Min -= new JVector(TriangleExpansion);
            box.Max += new JVector(TriangleExpansion);

            foreach (Triangle t in triangles)
            {
                // Update bounding box and move proxy in dynamic tree.
                JVector prevCenter = t.boundingBox.Center;
                t.UpdateBoundingBox();

                JVector linVel = t.VertexBody1.linearVelocity + 
                    t.VertexBody2.linearVelocity + 
                    t.VertexBody3.linearVelocity;

                linVel *= 1.0f / 3.0f;

                dynamicTree.MoveProxy(t.dynamicTreeID, ref t.boundingBox, linVel * timestep);

                JVector v1 = points[t.indices.I0].position;
                JVector v2 = points[t.indices.I1].position;
                JVector v3 = points[t.indices.I2].position;

                volume -= ((v2.Y - v1.Y) * (v3.Z - v1.Z) -
                    (v2.Z - v1.Z) * (v3.Y - v1.Y)) * (v1.X + v2.X + v3.X);
            }

            volume /= 6.0f;
        }