Exemple #1
0
        private void CreateDistanceJoints()
        {
            var sizeY = settings.StandsSettings.Segments;

            var distanceJoints = new GroupedData <GPDistanceJoint>();

            var group1 = new List <GPDistanceJoint>();
            var group2 = new List <GPDistanceJoint>();

            for (int i = 0; i < bodies.Length; i++)
            {
                if (i % sizeY == 0)
                {
                    continue;
                }

                var body1    = bodies[i - 1];
                var body2    = bodies[i];
                var distance = Vector3.Distance(body1.Position, body2.Position);//to global

                var list = i % 2 == 0 ? group1 : group2;

                var joint = new GPDistanceJoint(i - 1, i, distance, 0.5f);
                list.Add(joint);
            }

            distanceJoints.AddGroup(group1);
            distanceJoints.AddGroup(group2);

            DistanceJoints = distanceJoints;
        }
Exemple #2
0
        public void AddDitanceJoint(int body1Id, int body2Id, float distance)
        {
            Assert.IsTrue(body1Id >= 0 && body2Id >= 0, "Add body to world first");

            var joint = new GPDistanceJoint(body1Id, body2Id, distance);

            Data.DistanceJoints.Add(joint);
        }
Exemple #3
0
        public void AddDitanceJoint(GPBody body1, GPBody body2, float distance)
        {
            var body1Id = Array.IndexOf(bodies, body1);
            var body2Id = Array.IndexOf(bodies, body2);

            Assert.IsTrue(body1Id >= 0 && body2Id >= 0, "Add body to world first");

            var joint = new GPDistanceJoint(body1Id, body2Id, distance);

            Data.DistanceJoints.Add(joint);
        }
        private void InitBuffers()
        {
            TryAddBufferOrArray("matrices", data.MatricesBuffer, data.Matrices, sizeof(float) * 16);

            TryCreateBuffer("bodies", data.Bodies, GPBody.Size());
            TryCreateBuffer("sphereColliders", data.SphereColliders, GPSphereCollider.Size());

            TryCreateBuffer("kinematicBodies", data.KinematicsBodies, GPBody.Size());
            TryCreateBuffer("kinematicSphereColliders", data.KinematicsSphereColliders, GPSphereCollider.Size());
            TryCreateBuffer("kinematicsLineSphereColliders", data.KinematicsLineSphereColliders, GPLineSphereCollider.Size());

            TryCreateBuffer("distanceJoints", data.DistanceJoints.Data, GPDistanceJoint.Size());
            TryCreateBuffer("pointJoints", data.PointJoints, GPPointJoint.Size());

            bodiesThreadGroupsNum = Mathf.CeilToInt(wraper.GetBuffer("bodies").count / 1024f);
        }