示例#1
0
        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;
        }
示例#2
0
        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;
        }
示例#3
0
 public unsafe BlittableColliderGroup(NativeArray <BlittableCollider> colliders, BlittableTransform *transform)
 {
     Colliders = new BlittableColliders((BlittableCollider *)colliders.GetUnsafePtr(), colliders.Length);
     Transform = transform;
 }