public void AddKinematicsSphere(GPBody body, float radius, int groupId) { var bodyId = kinematicsBodies.Length; var collider = new GPSphereCollider(bodyId, radius); ArrayUtils.Add(ref kinematicsBodies, body); ArrayUtils.Add(ref kinematicsSphereColliders, collider); }
private void UpdateSphereColliders(List <SphereCollider> colliders) { if (sphereColliders == null) { sphereColliders = new GPSphereCollider[colliders.Count]; } for (var i = 0; i < colliders.Count; i++) { var sphereCollider = colliders[i]; var transformedRadius = sphereCollider.transform.lossyScale.x * sphereCollider.radius; sphereColliders[i] = new GPSphereCollider(i, transformedRadius); } }
private void UpdateSphereColliders() { var radius = settings.PhysicsSettings.StandRadius * provider.transform.lossyScale.x;//todo wrong way to scale var vertices = provider.GetVertices(); if (sphereColliders == null) { sphereColliders = new GPSphereCollider[vertices.Count]; } for (var i = 0; i < vertices.Count; i++) { sphereColliders[i] = new GPSphereCollider(i, radius); } }
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); }