public BlittableTransform(BlittableTransform *parent, Transform transform) { _parent = parent; WorldPosition = transform.position; _worldRotation = transform.rotation; _localPosition = transform.localPosition; _localRotation = transform.localRotation; _localScale = transform.localScale; _localToWorld = transform.localToWorldMatrix; }
public BlittablePoint( Transform transform, float radius, BlittableTransform *center, BlittableColliderGroups *blittableColliderGroups, BlittableTransform *blittableTransform) { Vector3 localPosition; if (transform.childCount == 0) { var delta = transform.position - transform.parent.position; var childPosition = transform.position + delta.normalized * 0.07f; localPosition = transform.worldToLocalMatrix.MultiplyPoint(childPosition); } else { var firstChild = transform.GetChild(0); var scale = firstChild.lossyScale; localPosition = firstChild.localPosition; localPosition.x *= scale.x; localPosition.y *= scale.y; localPosition.z *= scale.z; } var worldChildPosition = (Vector3)transform.TransformPoint(localPosition); _prevPosition = CurrentPosition = center != null?center->LocalToWorld.inverse.MultiplyPoint3x4(worldChildPosition) : worldChildPosition; _localRotation = transform.localRotation; _boneAxis = localPosition.normalized; _length = localPosition.magnitude; _radius = radius; _blittableColliderGroups = blittableColliderGroups; _transform = blittableTransform; _center = center; }
public unsafe BlittableColliderGroup(NativeArray <BlittableCollider> colliders, BlittableTransform *transform) { Colliders = new BlittableColliders((BlittableCollider *)colliders.GetUnsafePtr(), colliders.Length); Transform = transform; }